分享

中、英文与数字月份互转,总有一种你会用到!

 大海_Power 2021-05-22

1




       在日常工作中,大家会用到各种月份的表达方式,比如英文简写、英文全称、中文和数字等,如下图所示:

       但是,我们更多的时候,不是对月份本身的单独使用,月份从日期而来,而有用到日期的地方,都应先考虑规范日期的格式,然后再按需要进行转换成想要显示的方式。

      所以,从标准格式到其他格式的转换,会更加常见,无论是Excel、Power Query、Power Pivot,乃至其它各种编程软件、工具,通常也会对日期转换有相应的函数直接支持,而特殊格式之间的转换,也往往可以通过先转为规范的能识别的日期入手解决


2




      中英文月份和数字格式之间的转换问题,通常是因为显示形式的需要,所以,最常用的情况,其实是数字形式转为中文或英文,如图中的1和2,而这个,在PQ里的处理也最简单。

       最少见的需求应该说是从中文月份到数字的转换了,即上图中的4,因为你要在Excel或任何其他数据源里输入一个中文的日期,如“二〇二一年四月七日”,其实是比较难的!

       当然,单纯从月份转换来说,这个转换需求也是有可能存在的。


3




      前面我们讲过,各种格式之间的转换,可以通过先转为规范能识别的日期入手,所以,对于月份的转换,除上面提到的第4种特殊情况外,都可以先考虑给月份随便在前面加上年、后面加上日,构造成一个PQ能识别的日期:

1、英文月份转日期

= Date.From("2021 " & [英文月份_完整] & " 1")

该方法对英文简称也适用:

= Date.From("2021 " & [英文月份] & " 1")

2、数字转日期

= Date.From("2021-"&Text.From([数字月份])&"-1")

       数字转日期的原理也一样,但要注意的是,数字要先转为文本(Text.From),否则跟文本连接的时候会出错!


4




       有了这个日期之后,数字转中文、英文,以及英文转数字,其实都很简单了,直接1个函数就搞定了:

1、数字转中文

= Date.MonthName([月份转日期])

       但是,对于这个简单的写法,你有没有想过:为什么出来的月份名称是中文,而不是英文?

       其实,这只是因为咱们的系统区域(语言)设置为中文了!所以,这里面其实有个陷阱:如果你的系统语言改成了英文,那得到的结果就变了!

      所以,这里更加严谨的写法是加上第二个参数(这个参数的写法是怎么知道?后面我们再补充说):

= Date.MonthName([月份转日期],"zh-CN")

2、数字转英文

= Date.MonthName([月份转日期],"en-US")

3、英文转数字

= Date.Month([英文转日期])

4、中文转数字

       因为中文月份没办法转为日期,所以,要转换的话,我们可以通过预设列表的方式来实现,也就是找到这个列表的位置即可(记得加1哦):

= List.PositionOf( {"一","二","三","四","五","六","七","八","九","十","十一","十二"}, Text.Remove([中文月份],{"月"})) + 1

5




      前面我们在用Date.MonthName函数的时候,用到第二个参数,写了“zh-CN”和“en-US”,但:

  • 为什么这两个文本是这么写的?

  • 难道都得靠记住吗?

  • 还有其它国家或语言表示形式怎么吧?

     其实,我们不需要记,知道从哪里找就行。我们可以随便找一列,右键-更改类型-使用区域设置:

      然后选择需要的“区域”:

      查看生成的公式就能找到对应的写法了:


6




       关于日期格式、区域语言转换的问题,说起来,很多泪!

       从上面我们也可以看到,凭什么英文的月份单词,就可以直接加上年和日被系统识别,而中文的月份就不可以?

       说大了,这是一个国际标准的问题,所以为什么现在国家要对各种尖端技术争夺制定标准的机会,从华为的5G,到量子计算……标准是你的,所有的国家、企业、人才会围着你转,效率才会提升,国家才会更加强大!让我们拭目以待!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多