自定义日期和时间格式字符串
自定义日期和时间格式字符串
部分格式会受到语种和国家地区影响。
假定x
为DateTimeZone.From("2022-09-05T18:03:56.123450-08:00")
。
下表示例使用(格式, 区域)=DateTimeZone.ToText(x, 格式, 区域)
。
%
需组合列含义:
- 是:单独使用时需在前面添加
%
- 可能:视情况考虑是否添加
%
,通常都是一个或若干个重复字符才会如此。如%f
和ff
。 - 空白:可单独使用且不需要添加
%
。
格式说明符 | 需组合 | 说明 | 示例 |
---|---|---|---|
d | 是 | 日 | ("%d", "en-US") = 5 |
dd | 两位日 | ("dd", "en-US") = 05 | |
ddd | 星期几简称 | ("ddd", "zh-CN") = 周一 ("ddd", "en-US") = Mon | |
dddd | 星期几全称 | ("dddd", "zh-CN") = 星期一 ("dddd", "en-US") = Monday | |
f | 可能 | 更小的秒,个数表示位数 精确保证位数,可能补0 可以最多7个 f 组合f 不可与F 混用 | ("%f", "en-US") = 1 ("s.ff", "en-US") = 56.12 ("s.ffffff", "en-US") = 56.123450 ("FFFfff", "en-US") = 123123 |
F | 可能 | 更小的秒,个数表示位数 最大位数为源数据位数 可以最多7个 F 组合f 不可与F 混用 | ("%F", "en-US") = 1 ("FF", "en-US") = 12 ("s.FFFFFF", "en-US") = 56.12345 ("FFFfff", "en-US") = 123123 |
g 、gg | 可能 | 时期或时代 | ("%g", "zh-CN") = 公元 ("gyyyy", "zh-CN") = 公元2022 ("gyyyy", "en-US") = A.D.2022 |
h | 是 | 时 12小时制(1-12) | ("%h", "zh-CN") = 6 ("h:m", "en-US") = 6:3 |
hh | 两位时 12小时制(1-12) | ("hh", "zh-CN") = 06 ("hh", "en-US") = 06 | |
H | 是 | 时 24小时制(0-23) | ("%H", "zh-CN") = 18 ("H:m", "en-US") = 18:3 |
HH | 两位时 24小时制(0-23) | ("HH", "zh-CN") = 18 ("HH", "en-US") = 18 | |
K | 是 | 时区信息 | ("%K", "zh-CN") = -08:00 |
m | 是 | 分钟 | ("%m", "zh-CN") = 3 |
mm | 两位分钟 | ("mm", "zh-CN") = 03 ("h:mm", "zh-CN") = 6:03 | |
M | 是 | 月 | ("%M", "zh-CN") = 9 ("M-d", "en-US") = 9-5 |
MM | 两位月 | ("MM", "en-US") = 09 | |
MMM | 月份简称 | ("MMM", "zh-CN") = 9月 ("MMM", "en-US") = Sep | |
MMMM | 月份全称 | ("MMMM", "zh-CN") = 九月 ("MMMM", "en-US") = September | |
s | 是 | 秒 | ("%s", "zh-CN") = 56 |
ss | 两位秒 | ("ss", "zh-CN") = 56 | |
t | 是 | 上午/下午的第一个字符 会因为语言不同而不同 | ("HH t", "zh-CN") = 18 下 ("HH t", "en-US") = 18 P ("HH t", "ja-JP") = 18 午 |
tt | 上午/下午 会因为语言不同而不同 | ("HH tt", "zh-CN") = 18 下午 ("HH tt", "en-US") = 18 PM ("HH tt", "ja-JP") = 18 午後 | |
y | 是 | 年份(0-99) | ("%y", "zh-CN") = 22 |
yy | 年份(00-99) | ("yy", "zh-CN") = 22 | |
yyy | 年份(000-9999) 最低3位 | ("yyy", "zh-CN") = 2022 | |
yyyy | 年份(0000-9999) | ("yyyy", "zh-CN") = 2022 | |
yyyy | 年份(00000-99999) | ("yyyy", "zh-CN") = 02022 | |
z | 是 | 时区 仅小时,不含分钟 | ("%z", "zh-CN") = -8 |
zz | 时区 两位小时,不含分钟 | ("zz", "zh-CN") = -08 | |
zzz | 时区 含时分 | ("zzz", "zh-CN") = -08:00 | |
: | 是 | 时间分隔符 不一定非要分隔时分秒 | ("mm:ss") = 03:56 ("yyyy:MM") = 2022:09 |
/ | 是 | 日期分隔符 不一定非要分隔年月日 | ("mm/ss") = 03/56 ("yyyy/MM") = 2022/09 |
"" 、'' | 字面文本分隔符 保持引号之间的内容不变 | ("yyyy'K'") = 2022K ("yyyy""K""") = 2022K | |
% | 指示之后的字符是自定义格式说明符% 之后的一个字符和其他字符会分开解析 | ("%d") = 5 ("d") = 2022/9/5 ("%MM") = 99 | |
\ | 转义符 | ("yyyy\K") = 2022K ("yyyy\MM") = 2022M9 ("yyyy\M\M") = 2022MM | |
其它 | 其他字符保持原样 | ("今天是MM/dd") = 今天是09/05 ("today is MM/dd") = 下o5a22 i56 09/05 |
日期(d)格式说明符
返回日期中日的1-31之间的数字文本。单独使用时需要在前面添加%
。
日期(dd)格式说明符
返回日期中日的01-31之间的数字文本。结果始终为两位数字,不足两位的会在前面添加0
。
日期(ddd)格式说明符
返回周几的缩写。
结果受区域设置影响。
日期(dddd)格式说明符
返回周几的全称。
结果受区域设置影响。
分数秒(f)格式说明符
单独使用f
时需要在前面添加%
,另外最多可以连续使用7个f
。每个f
对应分数秒中秒数。比如fff
可以得到18:03:56.123456
的123
。
虽然单独使用若干f
和F
意思是一样的,但不可混用,混用时一旦切换大小写会被重新计数。比如:ffFF
可以得到18:03:56.123456
的1212
。
分数秒(F)格式说明符
同f
,但不可与f
混用。
纪元(g)格式说明符
单独使用g
时需要在前面添加%
。g
表示纪元,实际上也可以使用任意个g
,它们和使用一个g
意义相同,即%g
和ggggggg
是等效的。但通常为了简洁最多只会使用gg
。
小时(h)格式说明符
返回时间中小时的1-12的数字文本,即采用12小时制。
小时(hh)格式说明符
返回时间中小时的01-12的数字文本,结果保证是两位数字,如果不足两位则在前面补0
。
小时(H)格式说明符
返回时间中小时的0-23的数字文本,即采用24小时制。
小时(HH)格式说明符
返回时间中小时的00-23的数字文本,结果保证是两位数字,如果不足两位则在前面补0
。
时区(K)格式说明符
返回时区信息,单独使用时应在前面加%
,它应在DateTimeZone.ToText
函数中使用。结果字符串定义为:
- 本地环境中生成本地时区信息,但在Power Query Online中会得到
+00:00
。 - 如果不含时区信息,如
datetime
类型的值,结果为null
。
提示
Power Query Online运行在虚拟环境中,时区被设置为+00:00
。
分钟(m)格式说明符
返回时间中分钟的0-59数字文本,单独使用时需要在前面添加%
。
分钟(mm)格式说明符
返回时间中分钟的00-59数字文本,结果保证有两位数字,不足两位的会在前面添加0
。
月份(M)格式说明符
返回日期中月份的1-12的数字文本(对于有13个月的日历返回1-13),单独使用时需要在前面添加%
。
月份(MM)格式说明符
返回日期中月份的01-12的数字文本(对于有13个月的日历返回01-13),结果保证有两位数字,不足两位的会在前面添加0
。
月份(MMM)格式说明符
返回月份的缩写。
结果受区域设置影响。
月份(MMMM)格式说明符
返回月份的全称。
结果受区域设置影响。
秒(s)格式说明符
返回时间中秒的0-59数字文本,单独使用时需要在前面添加%
。
秒(ss)格式说明符
返回时间中秒的00-59数字文本,结果保证有两位数字,不足两位的会在前面添加0
。
正午(t)格式说明符
返回上午或下午(受区域设置影响会不同)的缩写,单独使用时需要在前面添加%
。
结果受区域设置影响。
正午(tt)格式说明符
返回上午或下午(受区域设置影响会不同)的全称。
结果受区域设置影响。
年份(y)格式说明符
返回年份0-99的数字文本,单独使用时需要在前面添加%
。
- 1-9年,返回1-9。
- 10-9999年,返回末尾两位的最简单形式0-99。例如2000年末尾是00,即0。
年份(yy)格式说明符
返回年份末尾的最后两位00-99,结果保证有两位数字,不足两位的会在前面添加0
。
年份(yyy)格式说明符
返回年份,结果保证至少有三位数字,不足三位的会在前面添加0
,超过3位的保持原样。
年份(yyyy)格式说明符
返回年份,结果保证至少有四位数字,不足四位的会在前面添加0
,超过4位的保持原样。
提示
虽然公历最多到9999年,但部分地区的表示方法可以超过该值(如泰国佛历),但也只是输出结果可以如此表示,对于日期值或日期部分会始终使用公历。
年份(yyyyy)格式说明符
返回年份,结果保证至少有五位数字,不足五位的会在前面添加0
,超过5位的保持原样。
偏移量(z)格式说明符
返回时区信息中的小时,结果包含符号,范围为-14
-+14
(数字的最简单形式,不会加0
),单独使用时需要在前面添加%
。
该说明符仅可用于DateTimeZone.ToText
函数中。
提示
该模式会忽略时区的分钟信息。
Power Query Online运行在虚拟环境中,时区被设置为+00:00
。
偏移量(zz)格式说明符
返回时区信息中的小时,返回时区信息中的两位小时数,结果包含符号,范围为-14
-+14
,不足两位的会在数字前加0
。
该说明符仅可用于DateTimeZone.ToText
函数中。
提示
该模式会忽略时区的分钟信息。
Power Query Online运行在虚拟环境中,时区被设置为+00:00
。
偏移量(zzz)格式说明符
返回时区信息的小时和分钟,结果中的小时和分钟一定是两位的,范围为-14:00
-+14:00
,不足两位的会在数字前加0
。
该说明符仅可用于DateTimeZone.ToText
函数中。
提示
Power Query Online运行在虚拟环境中,时区被设置为+00:00
。
分隔(:)说明符
/
和:
并非很明确的区分一定要用在日期和时间中作为分隔符,但通常为了保持习惯和可读性不会混用。
分隔(/)说明符
/
和:
并非很明确的区分一定要用在日期和时间中作为分隔符,但通常为了保持习惯和可读性不会混用。
转义
如果要对字符进行转义,可以:
\
:对之后的单个字符进行转义,比如\mM
只会保持m
的原样输出,而M
会正常输出月份。""
:对双引号之间的字符进行转义,实际使用时需要两个引号,即yyyy""m""
,更推荐使用单引号。''
:对单引号之间的字符进行转义,如yyyy'm'
。