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

2021-08-31 15:55:17 浏览数 (1)

1

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

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

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

2

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

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

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

3

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

1、英文月份转日期

代码语言:javascript复制
= Date.From("2021 " & [英文月份_完整] & " 1")

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

代码语言:javascript复制
= Date.From("2021 " & [英文月份] & " 1")

2、数字转日期

代码语言:javascript复制
= Date.From("2021-"&Text.From([数字月份])&"-1")

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

4

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

1、数字转中文

代码语言:javascript复制
= Date.MonthName([月份转日期])

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

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

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

代码语言:javascript复制
= Date.MonthName([月份转日期],"zh-CN")

2、数字转英文

代码语言:javascript复制
= Date.MonthName([月份转日期],"en-US")

3、英文转数字

代码语言:javascript复制
= Date.Month([英文转日期])

4、中文转数字

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

代码语言:javascript复制
= List.PositionOf(
    {"一","二","三","四","五","六","七","八","九","十","十一","十二"},
    Text.Remove([中文月份],{"月"})
)   1

5

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

  • 为什么这两个文本是这么写的?
  • 难道都得靠记住吗?
  • 还有其它国家或语言表示形式怎么吧?

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

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

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

6

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

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

0 人点赞