自定义日期和时间格式字符串
日期和时间格式字符串定义由格式设置操作产生的 Date、DateTime、DateTimeZone 或 Time 值的文本表示形式。 它还可定义分析操作中需要的日期和时间值的表示形式,以便成功将字符串转换为日期和时间。 自定义格式字符串由一个或多个自定义日期和时间格式说明符组成。 任何不是 标准日期和时间格式字符串的字符串 都解释为自定义日期和时间格式字符串。
在格式设置操作中,自定义日期和时间格式字符串可用于 ToText
日期和时间和时区实例的方法。 下面的示例演示了它的用法。
let
Source =
{
Text.From("Today is " & Date.ToText(#date(2011, 6, 10), [Format = "MMMM dd yyyy"]) & "."),
Text.Format("The current date and time: #{0}", {DateTimeZone.ToText(
#datetimezone(2011, 6, 10, 15, 24, 16, 0, 0), [Format = "MM/dd/yy H:mm:ss zzz"])}
)
}
in
Source
// The example displays the following output:
// Today is June 10, 2011.
// The current date and time: 06/10/11 15:24:16 +00:00
在分析操作中,自定义日期和时间格式字符串可与 Date、DateTime、Time 和 DateTimeZone 函数一起使用。 这些函数要求输入字符串完全符合特定模式,以便分析操作成功。 下面的示例演示了对 DateTime.FromText 函数的调用,以分析必须包括一个月、一天和两位数年份的日期。
let
dateValues = { "30-12-2011", "12-30-2011", "30-12-11", "12-30-11"},
pattern = "MM-dd-yy",
convertedDates = List.Transform(dateValues, (dateValue) =>
try Text.Format("Converted '#{0}' to #{1}.", {dateValue, DateTime.FromText(dateValue, [Format=pattern])})
otherwise Text.Format("Unable to convert '#{0}' to a date and time.", {dateValue}))
in
convertedDates
// The example displays the following output:
// Unable to convert '30-12-2011' to a date and time.
// Unable to convert '12-30-2011' to a date and time.
// Unable to convert '30-12-11' to a date and time.
// Converted '12-30-11' to 12/30/2011.
下表描述了自定义日期和时间格式说明符,并显示了由每个格式说明符生成的结果字符串。 默认情况下,结果字符串反映 zh-cn 区域性的格式设置约定。 如果特定格式说明符生成本地化结果字符串,则该示例还注明结果字符串适用的区域性。 有关使用自定义日期和时间格式字符串的详细信息,请转到“ 备注 ”部分。
格式说明符 | 说明 | 示例 |
---|---|---|
"d" | 一个月中的某一天(1 到 31)。 更多信息:“d”自定义格式说明符。 |
2009-06-01T13:45:30 -> 1 2009-06-15T13:45:30 -> 15 |
“dd” | 一个月中的某一天(01 到 31)。 详细信息: “dd”自定义格式说明符。 |
2009-06-01T13:45:30 -> 01 2009-06-15T13:45:30 -> 15 |
“ddd” | 一周中某天的缩写名称。 详细信息: “d”自定义格式说明符。 |
2009-06-15T13:45:30 -> Mon (en-US) 2009-06-15T13:45:30 -> Пн (ru-RU) 2009-06-15T13:45:30 -> lun. (fr-FR) |
“dddd” | 一周中某天的完整名称。 详细信息: “dd”自定义格式说明符。 |
2009-06-15T13:45:30 -> Monday (en-US) 2009-06-15T13:45:30 -> понедельник (ru-RU) 2009-06-15T13:45:30 -> lundi (fr-FR) |
“f” | 日期和时间值的十分之几秒。 更多信息:“f”自定义格式说明符。 |
2009-06-15T13:45:30.6170000 -> 6 2009-06-15T13:45:30.05 -> 0 |
“ff” | 日期和时间值的百分之几秒。 更多信息:“ff”自定义格式说明符。 |
2009-06-15T13:45:30.6170000 -> 61 2009-06-15T13:45:30.0050000 -> 00 |
“fff” | 日期和时间值的千分之几秒。 更多信息:“fff”自定义格式说明符。 |
6/15/2009 13:45:30.617 -> 617 6/15/2009 13:45:30.0005 -> 000 |
“ffff” | 日期和时间值的万分之几秒。 更多信息:“ffff”自定义格式说明符。 |
2009-06-15T13:45:30.6175000 -> 6175 2009-06-15T13:45:30.0000500 -> 0000 |
“fffff” | 日期和时间值的十万分之几秒。 更多信息:“fffff”自定义格式说明符。 |
2009-06-15T13:45:30.6175400 -> 61754 6/15/2009 13:45:30.000005 -> 00000 |
“ffffff” | 日期和时间值的百万分之几秒。 更多信息:“ffffff”自定义格式说明符。 |
2009-06-15T13:45:30.6175420 -> 617542 2009-06-15T13:45:30.0000005 -> 000000 |
“fffffff” | 日期和时间值的千万分之几秒。 更多信息:“fffffff”自定义格式说明符。 |
2009-06-15T13:45:30.6175425 -> 6175425 2009-06-15T13:45:30.0001150 -> 0001150 |
“F” | 如果非零,则为日期和时间值的十分之几秒。 更多信息:“F”自定义格式说明符。 |
2009-06-15T13:45:30.6170000 -> 6 2009-06-15T13:45:30.0500000 ->(无输出) |
“FF” | 如果非零,则为日期和时间值的百分之几秒。 更多信息:“FF”自定义格式说明符。 |
2009-06-15T13:45:30.6170000 -> 61 2009-06-15T13:45:30.0050000 ->(无输出) |
“FFF” | 如果非零,则为日期和时间值的千分之几秒。 详细信息: “FFF”自定义格式说明符。 |
2009-06-15T13:45:30.6170000 -> 617 2009-06-15T13:45:30.0005000 ->(无输出) |
“FFFF” | 如果非零,则为日期和时间值的万分之几秒。 更多信息:“FFFF”自定义格式说明符。 |
2009-06-15T13:45:30.5275000 -> 5275 2009-06-15T13:45:30.0000500 ->(无输出) |
“FFFFF” | 如果非零,则为日期和时间值的十万分之几秒。 更多信息:“FFFFF”自定义格式说明符。 |
2009-06-15T13:45:30.6175400 -> 61754 2009-06-15T13:45:30.0000050 ->(无输出) |
“FFFFFF” | 如果非零,则为日期和时间值的百万分之几秒。 更多信息:“FFFFFF”自定义格式说明符。 |
2009-06-15T13:45:30.6175420 -> 617542 2009-06-15T13:45:30.0000005 ->(无输出) |
“FFFFFFF” | 如果非零,则为日期和时间值的千万分之几秒。 更多信息:“FFFFFFF”自定义格式说明符。 |
2009-06-15T13:45:30.6175425 -> 6175425 2009-06-15T13:45:30.0001150 -> 000115 |
“g”、“gg” | 时期或纪元。 详细信息: “g”或“gg”自定义格式说明符。 |
2009-06-15T13:45:30.6170000 -> A.D. |
“h” | 采用 12 小时制的小时(从 1 到 12)。 更多信息:“h”自定义格式说明符。 |
2009-06-15T01:45:30 -> 1 2009-06-15T13:45:30 -> 1 |
“hh” | 采用 12 小时制的小时(从 01 到 12)。 更多信息:“hh”自定义格式说明符。 |
2009-06-15T01:45:30 -> 01 2009-06-15T13:45:30 -> 01 |
“H” | 采用 24 小时制的小时(从 0 到 23)。 详细信息: “H”自定义格式说明符。 |
2009-06-15T01:45:30 -> 1 2009-06-15T13:45:30 -> 13 |
“HH” | 采用 24 小时制的小时(从 00 到 23)。 详细信息: “HH”自定义格式说明符。 |
2009-06-15T01:45:30 -> 01 2009-06-15T13:45:30 -> 13 |
“K” | 时区信息。 详细信息: “K”自定义格式说明符。 |
2009-06-15T13:45:30,未指定 -> 2009-06-15T13:45:30,Utc -> +00:00 2009-06-15T13:45:30,本地 -> -07:00(取决于本地或云计算机设置) |
“m” | 分钟(0 到 59)。 更多信息:“m”自定义格式说明符。 |
2009-06-15T01:09:30 -> 9 2009-06-15T13:29:30 -> 29 |
“mm” | 分钟(00 到 59)。 更多信息:“mm”自定义格式说明符。 |
2009-06-15T01:09:30 -> 09 2009-06-15T01:45:30 -> 45 |
“M” | 月份(1 到 12)。 详细信息: “M”自定义格式说明符。 |
2009-06-15T13:45:30 -> 6 |
“MM” | 月份(01 到 12)。 详细信息: “MM”自定义格式说明符。 |
2009-06-15T13:45:30 -> 06 |
“MMM” | 月份的缩写名称。 详细信息: “MMM”自定义格式说明符。 |
2009-06-15T13:45:30 -> Jun (en-US) 2009-06-15T13:45:30 -> juin (fr-FR) 2009-06-15T13:45:30 -> Jun (zu-ZA) |
“MMMM” | 月份的完整名称。 详细信息: “MMMM”自定义格式说明符。 |
2009-06-15T13:45:30 -> June (en-US) 2009-06-15T13:45:30 -> juni (da-DK) 2009-06-15T13:45:30 -> Juni (zu-ZA) |
“s” | 秒(0 到 59)。 更多信息:“s”自定义格式说明符。 |
2009-06-15T13:45:09 -> 9 |
“ss” | 秒(00 到 59)。 更多信息:“ss”自定义格式说明符。 |
2009-06-15T13:45:09 -> 09 |
“t” | AM/PM 指示符的第一个字符。 详细信息: “t”自定义格式说明符。 |
2009-06-15T13:45:30 -> P (en-US) 2009-06-15T13:45:30 -> 午 (ja-JP) 2009-06-15T13:45:30 -> (fr-FR) |
“tt” | AM/PM 指示符。 详细信息: “tt”自定义格式说明符。 |
2009-06-15T13:45:30 -> PM (en-US) 2009-06-15T13:45:30 -> 午後 (ja-JP) 2009-06-15T13:45:30 -> (fr-FR) |
“y” | 年份(0 到 99)。 详细信息: “y”自定义格式说明符。 |
0001-01-01T00:00:00 -> 1 0900-01-01T00:00:00 -> 0 1900-01-01T00:00:00 -> 0 2009-06-15T13:45:30 -> 9 2019-06-15T13:45:30 -> 19 |
“yy” | 年份(00 到 99)。 详细信息: “yy”自定义格式说明符。 |
0001-01-01T00:00:00 -> 01 0900-01-01T00:00:00 -> 00 1900-01-01T00:00:00 -> 00 2019-06-15T13:45:30 -> 19 |
“yyy” | 年份(最少三位数字)。 详细信息: “yyy”自定义格式说明符。 |
0001-01-01T00:00:00 -> 001 0900-01-01T00:00:00 -> 900 1900-01-01T00:00:00 -> 1900 2009-06-15T13:45:30 -> 2009 |
“yyyy” | 由四位数字表示的年份。 详细信息: “yyyy”自定义格式说明符。 |
0001-01-01T00:00:00 -> 0001 0900-01-01T00:00:00 -> 0900 1900-01-01T00:00:00 -> 1900 2009-06-15T13:45:30 -> 2009 |
“yyyyy” | 由五位数字表示的年份。 详细信息: “yyy”自定义格式说明符。 |
0001-01-01T00:00:00 -> 00001 2009-06-15T13:45:30 -> 02009 |
“z” | 相对于 UTC 的小时偏移量,无前导零。 详细信息: “z”自定义格式说明符。 |
2009-06-15T13:45:30-07:00 -> -7 |
“zz” | 相对于 UTC 的小时偏移量,带有表示一位数值的前导零。 详细信息: “zz”自定义格式说明符。 |
2009-06-15T13:45:30-07:00 -> -07 |
“zzz” | 相对于 UTC 的小时和分钟偏移量。 详细信息: “zzz”自定义格式说明符。 |
2009-06-15T13:45:30-07:00 -> -07:00 |
":" | 时间分隔符。 详细信息: “:”自定义格式说明符。 |
2009-06-15T13:45:30 -> : (en-US) 2009-06-15T13:45:30 -> . (it-IT) 2009-06-15T13:45:30 -> : (ja-JP) |
"/" | 日期分隔符。 详细信息: “/”自定义格式说明符。 |
2009-06-15T13:45:30 -> / (en-US) 2009-06-15T13:45:30 -> - (ar-DZ) 2009-06-15T13:45:30 -> . (tr-TR) |
"string" 'string' |
文本字符串分隔符。 更多信息:字符文本。 |
2009-06-15T13:45:30 (“arr:”“ h:m t) -> arr: 1:45 P 2009-06-15T13:45:30 ('arr:' h:m t) -> arr: 1:45 P |
% | 将下面的字符定义为自定义格式说明符。 详细信息: 使用单个自定义格式说明符。 |
2009-06-15T13:45:30 (%h) -> 1 |
\, "", ' | 转义序列。 详细信息: 字符文本 和使用 转义序列。 |
2009-06-15T13:45:30 (h \h) -> 1 h 2009-06-15T13:45:30 (h“h”“) -> 1 小时 2009-06-15T13:45:30 (h'h') -> 1 小时 |
任何其他字符 | 字符将复制到未更改的结果字符串。 更多信息:字符文本。 |
2009-06-15T01:45:30 (arr hh:mm t) -> arr 01:45 A |
以下各节提供有关每个自定义日期和时间格式说明符的附加信息。 除非另有说明,否则每个说明符都会生成相同的字符串表示形式,而不考虑它是否与 Date、DateTime、DateTimeZone 或 Time 值一起使用。
日期“d”格式说明符
“d”自定义格式说明符
“d”自定义格式说明符将一个月中的某一天表示为从 1 到 31 的数字。 一位数的日期设置为不带前导零的格式。
如果使用“d”格式说明符而没有其他自定义格式说明符,则将该说明符解释为“d”标准日期和时间格式说明符。 有关使用单个格式说明符的详细信息,请参阅 本文后面的“使用单一自定义格式说明符 ”。
下面的示例在几个格式字符串中包含“d”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15), [Format = "d, M", Culture = ""]),
// Displays 29, 8
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15), [Format = "d, MMMM", Culture = "en-US"]),
// Displays 29, August
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15), [Format = "d, MMMM", Culture = "es-MX"])
// Displays 29, agosto
}
in
Source
“dd”自定义格式说明符
“dd”自定义格式字符串将一个月中的某一天表示为从 01 到 31 的数字。 一位数的日期设置为带有前导零的格式。
下面的示例在一个自定义格式字符串中包含“dd”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 1, 2, 6, 30, 15), [Format = "dd, MM", Culture = ""])
// Displays 02, 01
}
in
Source
“ddd”自定义格式说明符
“ddd”自定义格式说明符表示一周中某天的缩写名称。 从当前或指定的区域性中检索星期几的本地化缩写名称。
下面的示例在一个自定义格式字符串中包含“ddd”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15), [Format = "ddd d MMM", Culture = "en-US"]),
// Displays Thu 29 Aug
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15), [Format = "ddd d MMM", Culture = "fr-FR"])
// Displays jeu. 29 août
}
in
Source
“dddd”自定义格式说明符
“dddd”自定义格式说明符(以及任意数量的附加“d”说明符)表示一周中某天的完整名称。 从当前或指定的区域性中检索星期几的本地化名称。
下面的示例在一个自定义格式字符串中包含“dddd”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15), [Format = "dddd dd MMMM", Culture = "en-US"]),
// Displays Thursday 29 August
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15), [Format = "dddd dd MMMM", Culture = "it-IT"])
// Displays giovedì 29 agosto
}
in
Source
小写秒“f”分数说明符
“f”自定义格式说明符
“f”自定义格式说明符表示秒部分的最高有效位;也就是说,它表示日期和时间值的十分之几秒。
如果使用“f”格式说明符而没有其他格式说明符,则将该说明符解释为“f”标准日期和时间格式说明符。 有关使用单个格式说明符的详细信息,请参阅 本文后面的“使用单一自定义格式说明符 ”。
使用“f”格式说明符作为提供的格式字符串的一部分来分析小数秒数时,“f”格式说明符的数量表示必须存在的秒分数中最重要的数字数才能成功分析字符串。
下面的示例在一个自定义格式字符串中包含“f”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15.018), [Format = "hh:mm:ss:f", Culture = ""]),
// Displays 07:27:15:0
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15.018), [Format = "hh:mm:ss:F", Culture = ""])
// Displays 07:27:15:
}
in
Source
“ff”自定义格式说明符
“ff”自定义格式说明符表示秒部分的前两个有效位;也就是说,它表示日期和时间值的百分之几秒。
下面的示例在一个自定义格式字符串中包含“ff”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15.018), [Format = "hh:mm:ss:ff", Culture = ""]),
// Displays 07:27:15:01
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15.018), [Format = "hh:mm:ss:FF", Culture = ""])
// Displays 07:27:15:01
}
in
Source
“fff”自定义格式说明符
“fff”自定义格式说明符表示秒部分的前三个有效位;也就是说,它表示日期和时间值的毫秒。
下面的示例在一个自定义格式字符串中包含“fff”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15.018), [Format = "hh:mm:ss:fff", Culture = ""]),
// Displays 07:27:15:018
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15.018), [Format = "hh:mm:ss:FFF", Culture = ""])
// Displays 07:27:15:018
}
in
Source
“ffff”自定义格式说明符
“ffff”自定义格式说明符表示秒部分的前四个有效位;也就是说,它表示日期和时间值的万分之几秒。
虽然可以显示时间值的秒分量中的十万分之一,但该值可能没有意义。 日期和时间值的精度取决于系统时钟的分辨率。 在 Windows Server 2019 和 Windows 11 操作系统上,时钟分辨率约为 1 毫秒。
“fffff”自定义格式说明符
“fffff”自定义格式说明符表示秒部分的前五个有效位;也就是说,它表示日期和时间值的十万分之几秒。
尽管可以显示时间值的秒部分的百万分之一,但该值可能没有意义。 日期和时间值的精度取决于系统时钟的分辨率。 在 Windows Server 2019 和 Windows 11 操作系统上,时钟分辨率约为 1 毫秒。
“ffffff”自定义格式说明符
“ffffff”自定义格式说明符表示秒部分的前六个有效位;也就是说,它表示日期和时间值的百万分之几秒。
尽管可以显示时间值的秒部分的百万分之一,但该值可能没有意义。 日期和时间值的精度取决于系统时钟的分辨率。 在 Windows Server 2019 和 Windows 11 操作系统上,时钟分辨率约为 1 毫秒。
“fffffff”自定义格式说明符
“fffffff”自定义格式说明符表示秒部分的前七个有效位;也就是说,它表示日期和时间值的千万分之几秒。
虽然可以显示时间值第二个分量的第 1000 万分之一,但该值可能没有意义。 日期和时间值的精度取决于系统时钟的分辨率。 在 Windows Server 2019 和 Windows 11 操作系统上,时钟分辨率约为 1 毫秒。
大写秒“F”分数说明符
“F”自定义格式说明符
“F”自定义格式说明符表示秒部分的最高有效位;也就是说,它表示日期和时间值的十分之几秒。 如果数字为零,则不显示任何内容并且秒数后的小数点也不显示。
如果使用“F”格式说明符而没有其他格式说明符,则将该说明符解释为“F”标准日期和时间格式说明符。 有关使用单个格式说明符的详细信息,请参阅 本文后面的“使用单一自定义格式说明符 ”。
分析时使用的“F”格式说明符数指示可用于成功分析字符串的秒分数的最大有效位数。
下面的示例在一个自定义格式字符串中包含“F”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15.018), [Format = "hh:mm:ss:f", Culture = ""]),
// Displays 07:27:15:0
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15.018), [Format = "hh:mm:ss:F", Culture = ""])
// Displays 07:27:15:
}
in
Source
“FF”自定义格式说明符
“FF”自定义格式说明符表示秒部分的前两个有效位;也就是说,它表示日期和时间值的百分之几秒。 不显示尾随零。 如果两个有效数字为零,则不显示任何内容,在这种情况下,也不显示秒数后的小数点。
下面的示例在一个自定义格式字符串中包含“FF”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15.018), [Format = "hh:mm:ss:ff", Culture = ""]),
// Displays 07:27:15:01
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15.018), [Format = "hh:mm:ss:FF", Culture = ""])
// Displays 07:27:15:01
}
in
Source
“FFF”自定义格式说明符
“FFF”自定义格式说明符表示秒部分的前三个有效位;也就是说,它表示日期和时间值的毫秒。 不显示尾随零。 如果三个有效数字为零,则不显示任何内容,在这种情况下,也不显示秒数后的小数点。
下面的示例在一个自定义格式字符串中包含“FFF”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15.018), [Format = "hh:mm:ss:fff", Culture = ""]),
// Displays 07:27:15:018
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15.018), [Format = "hh:mm:ss:FFF", Culture = ""])
// Displays 07:27:15:018
}
in
Source
“FFFF”自定义格式说明符
“FFFF”自定义格式说明符表示秒部分的前四个有效位;也就是说,它表示日期和时间值的万分之几秒。 不显示尾随零。 如果四个有效数字为零,则不显示任何内容,在这种情况下,也不显示秒数后的小数点。
虽然可以显示时间值的秒分量中的十万分之一,但该值可能没有意义。 日期和时间值的精度取决于系统时钟的分辨率。 在 Windows Server 2019 和 Windows 11 操作系统上,时钟分辨率约为 1 毫秒。
“FFFFF”自定义格式说明符
“FFFFF”自定义格式说明符表示秒部分的前五个有效位;也就是说,它表示日期和时间值的十万分之几秒。 不显示尾随零。 如果五个有效数字为零,则不显示任何内容,在这种情况下,也不显示秒数后的小数点。
尽管可以显示时间值的秒部分的百万分之一,但该值可能没有意义。 日期和时间值的精度取决于系统时钟的分辨率。 在 Windows Server 2019 和 Windows 11 操作系统上,时钟分辨率约为 1 毫秒。
“FFFFFF”自定义格式说明符
“FFFFFF”自定义格式说明符表示秒部分的前六个有效位;也就是说,它表示日期和时间值的百万分之几秒。 不显示尾随零。 如果六个有效数字为零,则不显示任何内容,在这种情况下,也不显示秒数后的小数点。
尽管可以显示时间值的秒部分的百万分之一,但该值可能没有意义。 日期和时间值的精度取决于系统时钟的分辨率。 在 Windows Server 2019 和 Windows 11 操作系统上,时钟分辨率约为 1 毫秒。
“FFFFFFF”自定义格式说明符
“FFFFFFF”自定义格式说明符表示秒部分的前七个有效位;也就是说,它表示日期和时间值的千万分之几秒。 不显示尾随零。 如果七个有效数字为零,则不显示任何内容,在这种情况下,也不显示秒数后的小数点。
虽然可以显示时间值第二个分量的第 1000 万分之一,但该值可能没有意义。 日期和时间值的精度取决于系统时钟的分辨率。 在 Windows Server 2019 和 Windows 11 操作系统上,时钟分辨率约为 1 毫秒。
纪元“g”格式说明符
“g”或“gg”自定义格式说明符
“g”或“gg”自定义格式说明符(以及任意数量的附加“g”说明符)表示时期或纪元(例如 A.D)。如果要设置格式的日期没有关联的时期或纪元字符串,则格式设置操作将忽略此说明符。
如果使用“g”格式说明符而没有其他自定义格式说明符,则将该说明符解释为“g”标准日期和时间格式说明符。 有关使用单个格式说明符的详细信息,请参阅 本文后面的“使用单一自定义格式说明符 ”。
下面的示例在一个自定义格式字符串中包含“g”自定义格式说明符。
let
Source =
{
Date.ToText(#date(70, 08, 04), [Format = "MM/dd/yyyy g", Culture = ""]),
// Displays 08/04/0070 A.D.
Date.ToText(#date(70, 08, 04), [Format = "MM/dd/yyyy g", Culture = "fr-FR"])
// Displays 08/04/0070 ap. J.-C.
}
in
Source
小写小时“h”格式说明符
“h”自定义格式说明符
“h”自定义格式说明符将小时表示为从 1 到 12 的数字,即采用 12 小时制表示小时,自午夜或中午开始对整小时计数。 午夜后经过的某特定小时数与中午过后的相同小时数无法加以区分。 该小时未舍入,并且没有前导零就设置了一位数小时的格式。 例如,给定上午或下午时间为 5:43,则此自定义格式说明符显示“5”。
如果在不使用其他自定义格式说明符的情况下使用“h”格式说明符,则会将其解释为标准日期和时间格式说明符,并引发表达式错误。 有关使用单个格式说明符的详细信息,请参阅 本文后面的“使用单一自定义格式说明符 ”。
下面的示例在一个自定义格式字符串中包含“h”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 1, 1, 18, 9, 1), [Format = "h:m:s.F t", Culture = ""]),
// Displays 6:9:1 P
DateTime.ToText(#datetime(2024, 1, 1, 18, 9, 1), [Format = "h:m:s.F t", Culture = "el-GR"]),
// Displays 6:9:1 μ
DateTime.ToText(#datetime(2024, 1, 1, 9, 18, 1.500), [Format = "h:m:s.F t", Culture = ""]),
// Displays 9:18:1.5 A
DateTime.ToText(#datetime(2024, 1, 1, 9, 18, 1.500), [Format = "h:m:s.F t", Culture = "el-GR"])
// Displays 9:18:1.5 π
}
in
Source
“hh”自定义格式说明符
“hh”自定义格式说明符(以及任意数量的附加“h”说明符)将小时表示为从 01 到 12 的数字,即采用 12 小时制表示小时,自午夜或中午开始对整小时计数。 午夜后经过的某特定小时数与中午过后的相同小时数无法加以区分。 小时未舍入,并且以前导零格式设置一位数小时的格式。 例如,给定上午或下午时间为 5:43,则此格式说明符显示“05”。
下面的示例在一个自定义格式字符串中包含“hh”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 1, 1, 18, 9, 1), [Format = "hh:mm:ss tt", Culture = ""]),
// Displays 06:09:01 PM
DateTime.ToText(#datetime(2024, 1, 1, 18, 9, 1), [Format = "hh:mm:ss tt", Culture = "hu-HU"]),
// Displays 06:09:01 du.
DateTime.ToText(#datetime(2024, 1, 1, 9, 18, 1.500), [Format = "hh:mm:ss.ff tt", Culture = ""]),
// Displays 09:18:01.50 AM
DateTime.ToText(#datetime(2024, 1, 1, 9, 18, 1.500), [Format = "hh:mm:ss.ff tt", Culture = "hu-HU"])
// Displays 09:18:01.50 de.
}
in
Source
大写小时“H”格式说明符
“H”自定义格式说明符
“H”自定义格式说明符将小时表示为从 0 到 23 的数字,即通过从零开始的 24 小时制表示小时,自午夜开始对整小时计数。 一位数字的小时数设置为不带前导零的格式。
如果在不使用其他自定义格式说明符的情况下使用“H”格式说明符,则会将其解释为标准日期和时间格式说明符,并引发表达式错误。 有关使用单个格式说明符的详细信息,请参阅 本文后面的“使用单一自定义格式说明符 ”。
下面的示例在一个自定义格式字符串中包含“H”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 1, 1, 6, 9, 1), [Format = "H:mm:ss", Culture = ""])
// Displays 6:09:01
}
in
Source
“HH”自定义格式说明符
“HH”自定义格式说明符(以及任意数量的附加“H”说明符)将小时表示为从 00 到 23 的数字,即通过从零开始的 24 小时制表示小时,自午夜开始对整小时计数。 一位数字的小时数设置为带前导零的格式。
下面的示例在一个自定义格式字符串中包含“HH”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 1, 1, 6, 9, 1), [Format = "HH:mm:ss", Culture = ""])
// Displays 06:09:01
}
in
Source
时区“K”格式说明符
“K”自定义格式说明符
“K”自定义格式说明符表示日期和时间值的时区信息。 将此格式说明符与 DateTimeZone 值一起使用时,结果字符串定义为:
对于本地时区,如果查询在 Power Query Desktop 中运行,则此说明符将生成一个结果字符串,其中包含与协调世界时(UTC),例如“-07:00”。 如果查询在 Power Query Online 中运行,则结果字符串不会生成与 UTC 时间(即“+00:00”)的偏移量。
对于 UTC 时间,结果字符串不生成与 UTC 时间的偏移量;即“+00:00 表示 UTC 日期。
从未指定的时区一次,结果为空。
如果在不使用其他自定义格式说明符的情况下使用“K”格式说明符,则会将其解释为标准日期和时间格式说明符,并引发表达式错误。 有关使用单个格式说明符的详细信息,请参阅 本文后面的“使用单一自定义格式说明符 ”。
下面的示例显示一个字符串,该字符串使用“K”自定义格式说明符在美国太平洋时区的系统上具有各种值。
let
Source =
{
DateTimeZone.ToText(DateTimeZone.LocalNow(),[Format="%K"]),
// Displays -07:00 (Desktop) or +00:00 (Online)
DateTimeZone.ToText(DateTimeZone.UtcNow(),[Format="%K"]),
// Displays +00:00
Text.Format("'#{0}'", {DateTime.ToText(DateTime.LocalNow(),[Format="%K"])})
// Displays ''
}
in
Source
注意
DateTimeZone.LocalNow 返回的值取决于是在本地计算机上还是在联机上运行 Power Query。 例如,在美国太平洋时区的系统上的上例中,Power Query Desktop 返回 -07:00
,因为它正在读取本地计算机上设置的时间。 但是,Power Query Online 返回 +00:00
是因为它正在读取云虚拟机上设置的时间,这些时间设置为 UTC。
分钟“m”格式说明符
“m”自定义格式说明符
“m”自定义格式说明符将分钟表示为从 0 到 59 的数字。 分钟表示自上一小时以来经过的整分钟数。 一位数字的分钟数设置为不带前导零的格式。
如果使用“m”格式说明符而没有其他自定义格式说明符,则将该说明符解释为“m”标准日期和时间格式说明符。 有关使用单个格式说明符的详细信息,请参阅 本文后面的“使用单一自定义格式说明符 ”。
下面的示例在一个自定义格式字符串中包含“m”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 1, 1, 18, 9, 1), [Format = "h:m:s.F t", Culture = ""]),
// Displays 6:9:1 P
DateTime.ToText(#datetime(2024, 1, 1, 18, 9, 1), [Format = "h:m:s.F t", Culture = "el-GR"]),
// Displays 6:9:1 μ
DateTime.ToText(#datetime(2024, 1, 1, 9, 18, 1.500), [Format = "h:m:s.F t", Culture = ""]),
// Displays 9:18:1.5 A
DateTime.ToText(#datetime(2024, 1, 1, 9, 18, 1.500), [Format = "h:m:s.F t", Culture = "el-GR"])
// Displays 9:18:1.5 π
}
in
Source
“mm”自定义格式说明符
“mm”自定义格式说明符(以及任意数量的附加“m”说明符)将分钟表示为从 00 到 59 的数字。 分钟表示自上一小时以来经过的整分钟数。 一位数字的分钟数设置为带前导零的格式。
下面的示例在一个自定义格式字符串中包含“mm”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 1, 1, 18, 9, 1), [Format = "hh:mm:ss tt", Culture = ""]),
// Displays 06:09:01 PM
DateTime.ToText(#datetime(2024, 1, 1, 18, 9, 1), [Format = "hh:mm:ss tt", Culture = "hu-HU"]),
// Displays 06:09:01 du.
DateTime.ToText(#datetime(2024, 1, 1, 9, 18, 1.500), [Format = "hh:mm:ss.ff tt", Culture = ""]),
// Displays 09:18:01.50 AM
DateTime.ToText(#datetime(2024, 1, 1, 9, 18, 1.500), [Format = "hh:mm:ss.ff tt", Culture = "hu-HU"])
// Displays 09:18:01.50 de.
}
in
Source
月份“M”格式说明符
“M”自定义格式说明符
“M”自定义格式说明符将月份表示为从 1 到 12 的数字(对于有 13 个月的日历,将月份表示为从 1 到 13 的数字)。 一位数字的月份数设置为不带前导零的格式。
如果使用“M”格式说明符而没有其他自定义格式说明符,则将该说明符解释为“M”标准日期和时间格式说明符。 有关使用单个格式说明符的详细信息,请参阅 本文后面的“使用单一自定义格式说明符 ”。
下面的示例在一个自定义格式字符串中包含“M”自定义格式说明符。
let
Source =
{
Date.ToText(#date(2024, 8, 18), [Format = "(M) MMM, MMMM", Culture = "en-US"]),
// Displays (8) Aug, August
Date.ToText(#date(2024, 8, 18), [Format = "(M) MMM, MMMM", Culture = "nl-NL"]),
// Displays (8) aug, augustus
Date.ToText(#date(2024, 8, 18), [Format = "(M) MMM, MMMM", Culture = "lv-LV"])
// Displays (8) aug., augusts
}
in
Source
“MM”自定义格式说明符
“MM”自定义格式说明符将月份表示为从 01 到 12 的数字(对于有 13 个月的日历,将月份表示为从 1 到 13 的数字)。 一位数字的月份数设置为带有前导零的格式。
下面的示例在一个自定义格式字符串中包含“MM”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 1, 2, 6, 30, 15), [Format = "dd, MM", Culture = ""])
// Displays 02, 01
}
in
Source
“MMM”自定义格式说明符
“MMM”自定义格式说明符表示月份的缩写名称。 从当前或指定区域性的缩写月份名称中检索月份的本地化缩写名称。 如果自定义格式字符串中有“d”或“dd”自定义格式说明符,则会改为从缩写的代名中检索月份名称。
下面的示例在一个自定义格式字符串中包含“MMM”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15), [Format = "ddd d MMM", Culture = "en-US"]),
// Displays Thu 29 Aug
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15), [Format = "ddd d MMM", Culture = "fr-FR"])
// Displays jeu. 29 août
}
in
Source
“MMMM”自定义格式说明符
“MMMM”自定义格式说明符表示月份的完整名称。 月份的本地化名称是从当前或指定的区域性中检索的。 如果自定义格式字符串中有“d”或“dd”自定义格式说明符,则会改为从缩写的代名中检索月份名称。
下面的示例在一个自定义格式字符串中包含“MMMM”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15), [Format = "dddd dd MMMM", Culture = "en-US"]),
// Displays Thursday 29 August
DateTime.ToText(#datetime(2024, 8, 29, 19, 27, 15), [Format = "dddd dd MMMM", Culture = "it-IT"])
// Displays giovedì 29 agosto
}
in
Source
秒“s”格式说明符
“s”自定义格式说明符
“s”自定义格式说明符将秒表示为从 0 到 59 的数字。 结果表示自上一分钟以来经过的整秒数。 一位数字的秒数设置为不带前导零的格式。
如果使用“s”格式说明符而没有其他自定义格式说明符,则将该说明符解释为“s”标准日期和时间格式说明符。 有关使用单个格式说明符的详细信息,请参阅 本文后面的“使用单一自定义格式说明符 ”。
下面的示例在一个自定义格式字符串中包含“s”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 1, 1, 18, 9, 1), [Format = "h:m:s.F t", Culture = ""]),
// Displays 6:9:1 P
DateTime.ToText(#datetime(2024, 1, 1, 18, 9, 1), [Format = "h:m:s.F t", Culture = "el-GR"]),
// Displays 6:9:1 μ
DateTime.ToText(#datetime(2024, 1, 1, 9, 18, 1.500), [Format = "h:m:s.F t", Culture = ""]),
// Displays 9:18:1.5 A
DateTime.ToText(#datetime(2024, 1, 1, 9, 18, 1.500), [Format = "h:m:s.F t", Culture = "el-GR"])
// Displays 9:18:1.5 π
}
in
Source
“ss”自定义格式说明符
“ss”自定义格式说明符(以及任意数量的附加“s”说明符)将秒表示为从 00 到 59 的数字。 结果表示自上一分钟以来经过的整秒数。 一位数字的秒数设置为带前导零的格式。
下面的示例在一个自定义格式字符串中包含“ss”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 1, 1, 18, 9, 1), [Format = "hh:mm:ss tt", Culture = ""]),
// Displays 06:09:01 PM
DateTime.ToText(#datetime(2024, 1, 1, 18, 9, 1), [Format = "hh:mm:ss tt", Culture = "hu-HU"]),
// Displays 06:09:01 du.
DateTime.ToText(#datetime(2024, 1, 1, 9, 18, 1.500), [Format = "hh:mm:ss.ff tt", Culture = ""]),
// Displays 09:18:01.50 AM
DateTime.ToText(#datetime(2024, 1, 1, 9, 18, 1.500), [Format = "hh:mm:ss.ff tt", Culture = "hu-HU"])
// Displays 09:18:01.50 de.
}
in
Source
正午“t”格式说明符
“t”自定义格式说明符
“t”自定义格式说明符表示 AM/PM 指示符的第一个字符。 从当前或特定区域性检索相应的本地化设计器。 AM 指示符用于自 0:00:00(午夜)到 11:59:59.999 的所有时间。 PM 指示符用于自 12:00:00(中午)到 23:59:59.999 的所有时间。
如果使用“t”格式说明符而没有其他自定义格式说明符,则将该说明符解释为“t”标准日期和时间格式说明符。 有关使用单个格式说明符的详细信息,请参阅 本文后面的“使用单一自定义格式说明符 ”。
下面的示例在一个自定义格式字符串中包含“t”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 1, 1, 18, 9, 1), [Format = "h:m:s.F t", Culture = ""]),
// Displays 6:9:1 P
DateTime.ToText(#datetime(2024, 1, 1, 18, 9, 1), [Format = "h:m:s.F t", Culture = "el-GR"]),
// Displays 6:9:1 μ
DateTime.ToText(#datetime(2024, 1, 1, 9, 18, 1.500), [Format = "h:m:s.F t", Culture = ""]),
// Displays 9:18:1.5 A
DateTime.ToText(#datetime(2024, 1, 1, 9, 18, 1.500), [Format = "h:m:s.F t", Culture = "el-GR"])
// Displays 9:18:1.5 π
}
in
Source
“tt”自定义格式说明符
“tt”自定义格式说明符(以及任意数量的附加“t”说明符)表示整个 AM/PM 指示符。 从当前或特定区域性检索相应的本地化设计器。 AM 指示符用于自 0:00:00(午夜)到 11:59:59.999 的所有时间。 PM 指示符用于自 12:00:00(中午)到 23:59:59.999 的所有时间。
对于需要维护 AM 与 PM 之间的差异的语言,应确保使用“tt”说明符。 以日语为例,其 AM 和 PM 指示符的差异点为第二个字符,而非第一个字符。
下面的示例在一个自定义格式字符串中包含“tt”自定义格式说明符。
let
Source =
{
DateTime.ToText(#datetime(2024, 1, 1, 18, 9, 1), [Format = "hh:mm:ss tt", Culture = ""]),
// Displays 06:09:01 PM
DateTime.ToText(#datetime(2024, 1, 1, 18, 9, 1), [Format = "hh:mm:ss tt", Culture = "hu-HU"]),
// Displays 06:09:01 du.
DateTime.ToText(#datetime(2024, 1, 1, 9, 18, 1.500), [Format = "hh:mm:ss.ff tt", Culture = ""]),
// Displays 09:18:01.50 AM
DateTime.ToText(#datetime(2024, 1, 1, 9, 18, 1.500), [Format = "hh:mm:ss.ff tt", Culture = "hu-HU"])
// Displays 09:18:01.50 de.
}
in
Source
年份“y”格式说明符
“y”自定义格式说明符
“y”自定义格式说明符将年份表示为一位或两位数字。 如果年份多于两位数,则结果中仅显示两位低位数。 如果两位数字的年份的第一个数字以零开始(例如,2008),则该数字设置为不带前导零的格式。
如果使用“y”格式说明符而没有其他自定义格式说明符,则将该说明符解释为“y”标准日期和时间格式说明符。 有关使用单个格式说明符的详细信息,请参阅 本文后面的“使用单一自定义格式说明符 ”。
下面的示例在一个自定义格式字符串中包含“y”自定义格式说明符。
let
Source =
{
Date.ToText(#date(1, 12, 1), [Format = "%y"]),
// Displays 1
Date.ToText(#date(2024, 1, 1), [Format = "%y"])
// Displays 24
}
in
Source
“yy”自定义格式说明符
“yy”自定义格式说明符将年份表示为一位或两位数字。 如果年份多于两位数,则结果中仅显示两位低位数。 如果两位数年份的有效数字少于两个,则用前导零填充该数字以产生两位数。
在分析操作中,使用“yy”自定义格式说明符分析的两位数年份基于格式提供程序的当前日历进行解释。 下面的示例通过使用默认 zh-cn 区域性(在这种情况下为当前区域性)的公历来分析具有二位数年份的日期的字符串表示形式。 为四位数日期返回的值取决于操作系统设置的 100 年范围。
let
// Define the date format and value
fmt = "dd-MMM-yy",
// Convert year 49 to a 4-digit year
firstDate = Text.Format("#{0}", { Date.FromText("24-Jan-49", [Format = fmt]) }),
// Convert year 50 to a 4-digit year
finalDate = Text.Format("#{0}", { Date.FromText("24-Jan-50", [Format = fmt]) }),
Heading = "Default Two Digit Year Range: 1950 - 2049",
result = {Heading, firstDate, finalDate}
in
result
// The example displays the following output:
// Default Two Digit Year Range: 1950 - 2049
// 1/24/2049
// 1/24/1950
下面的示例在一个自定义格式字符串中包含“yy”自定义格式说明符。
let
Source =
{
Date.ToText(#date(1, 12, 1), [Format = "yy"]),
// Displays 01
Date.ToText(#date(2024, 1, 1), [Format = "yy"])
// Displays 24
}
in
Source
“yyy”自定义格式说明符
“yyy”自定义格式说明符至少使用三位数字表示年份。 如果年份的有效数字多于三个,则将它们包括在结果字符串中。 如果年份少于三位数,则用前导零填充该数字以产生三位数。
注意
对于年份可以为五位数的泰国佛历,此格式说明符将显示全部有效数字。
下面的示例在一个自定义格式字符串中包含“yyy”自定义格式说明符。
let
Source =
{
Date.ToText(#date(1, 12, 1), [Format = "yyy"]),
// Displays 001
Date.ToText(#date(2024, 1, 1), [Format = "yyy"])
// Displays 2024
}
in
Source
“yyyy”自定义格式说明符
“yyyy”自定义格式说明符至少使用四位数字表示年份。 如果年份的有效数字多于四个,则将它们包括在结果字符串中。 如果年份少于四位数,则用前导零填充该数字使其达到四位数。
注意
对于年份可以为五位数的泰国佛历,此格式说明符将最少显示四位数字。
下面的示例在一个自定义格式字符串中包含“yyyy”自定义格式说明符。
let
Source =
{
Date.ToText(#date(1, 12, 1), [Format = "yyyy"]),
// Displays 0001
Date.ToText(#date(2024, 1, 1), [Format = "yyyy"])
// Displays 2024
}
in
Source
“yyyyy”自定义格式说明符
“yyyyy”自定义格式说明符(以及任意数量的附加“y”说明符)最少将年份表示为五位数字。 如果年份的有效数字多于五个,则将它们包括在结果字符串中。 如果年份少于五位数,则用前导零填充该数字以产生五位数。
如果存在额外的“y”说明符,则用所需个数的前导零填充该数字以产生“y”说明符的数目。
下面的示例在一个自定义格式字符串中包含“yyyyy”自定义格式说明符。
let
Source =
{
Date.ToText(#date(1, 12, 1), [Format = "yyyyy"]),
// Displays 00001
Date.ToText(#date(2024, 1, 1), [Format = "yyyyy"])
// Displays 02024
}
in
Source
偏移量“z”格式说明符
“z”自定义格式说明符
使用 DateTimeZone 值时,“z”自定义格式说明符表示指定时区与协调世界时(UTC)的有符号偏移量(以小时为单位)。 偏移量始终显示为带有前导符号。 加号 (+) 指示早于 UTC 的小时数,减号 (-) 指示晚于 UTC 的小时数。 一位数字的偏移量设置为不带前导零的格式。
下表显示了偏移值如何根据 DateTimeZone 函数更改。
DateTimeZone 值 | 偏移量值 |
---|---|
DateTimeZone.LocalNow | 在 Power Query Desktop 上,本地操作系统时区与 UTC 的已签名偏移量。 在 Power Query Online 上,返回 +00 。 |
DateTimeZone.UtcNow | 返回 +0 。 |
如果在不使用其他自定义格式说明符的情况下使用“z”格式说明符,则会将其解释为标准日期和时间格式说明符,并引发表达式错误。 有关使用单个格式说明符的详细信息,请参阅 本文后面的“使用单一自定义格式说明符 ”。
以下示例在美国太平洋时区的系统上的自定义格式字符串中包含“z”自定义格式说明符。
let
Source =
{
DateTimeZone.ToText(DateTimeZone.LocalNow(), [Format="{0:%z}"]),
// Displays {0:-7} on Power Query Desktop
// Displays {0:+0} on Power Query Online
DateTimeZone.ToText(DateTimeZone.UtcNow(),[Format="{0:%z}"]),
// Displays {0:+0}
DateTimeZone.ToText(DateTimeZone.SwitchZone(
#datetimezone(2024, 8, 1, 0, 0, 0, 0, 0), 6),
[Format = "{0:%z}"]
)
// Displays {0:+6}
}
in
Source
注意
DateTimeZone.LocalNow 返回的值取决于是在本地计算机上还是在联机上运行 Power Query。 例如,在美国太平洋时区的系统上的上例中,Power Query Desktop 返回 {0:-7}
,因为它正在读取本地计算机上设置的时间。 但是,Power Query Online 返回 {0:+0}
是因为它正在读取云虚拟机上设置的时间,这些时间设置为 UTC。
“zz”自定义格式说明符
使用 DateTimeZone 值时,“zz”自定义格式说明符表示指定时区与 UTC 的有符号偏移量(以小时为单位)。 偏移量始终显示为带有前导符号。 加号 (+) 指示早于 UTC 的小时数,减号 (-) 指示晚于 UTC 的小时数。 一位数的偏移量设置为带前导零的格式。
下表显示了偏移值如何根据 DateTimeZone 函数更改。
DateTimeZone 值 | 偏移量值 |
---|---|
DateTimeZone.LocalNow | 在 Power Query Desktop 上,本地操作系统时区与 UTC 的已签名偏移量。 在 Power Query Online 上,返回 +00 。 |
DateTimeZone.UtcNow | 返回 +00 。 |
以下示例在美国太平洋时区的系统上的自定义格式字符串中包含“zz”自定义格式说明符。
let
Source =
{
DateTimeZone.ToText(DateTimeZone.LocalNow(), [Format="{0:zz}"]),
// Displays {0:-07} on Power Query Desktop
// Displays {0:+00} on Power Query Online
DateTimeZone.ToText(DateTimeZone.UtcNow(),[Format="{0:zz}"]),
// Displays {0:+00}
DateTimeZone.ToText(DateTimeZone.SwitchZone(
#datetimezone(2024, 8, 1, 0, 0, 0, 0, 0), 6),
[Format = "{0:zz}"]
)
// Displays {0:+06}
}
in
Source
注意
DateTimeZone.LocalNow 返回的值取决于是在本地计算机上还是在联机上运行 Power Query。 例如,在美国太平洋时区的系统上的上例中,Power Query Desktop 返回 {0:-07}
,因为它正在读取本地计算机上设置的时间。 但是,Power Query Online 返回 {0:+00}
是因为它正在读取云虚拟机上设置的时间,这些时间设置为 UTC。
“zzz”自定义格式说明符
使用 DateTimeZone 值时,“zzz”自定义格式说明符表示指定时区与 UTC 的有符号偏移量,以小时和分钟为单位。 偏移量始终显示为带有前导符号。 加号 (+) 指示早于 UTC 的小时数,减号 (-) 指示晚于 UTC 的小时数。 一位数字的偏移量设置为带前导零的格式。
下表显示了偏移值如何根据 DateTimeZone 函数更改。
DateTimeZoneValue 值 | 偏移量值 |
---|---|
DateTimeZone.LocalNow | 在 Power Query Desktop 上,本地操作系统时区与 UTC 的已签名偏移量。 在 Power Query Online 上,返回 +00 。 |
DateTimeZone.UtcNow | 返回 +00:00 。 |
以下示例包含美国太平洋时区系统上的自定义格式字符串中的“zzz”自定义格式说明符。
let
Source =
{
DateTimeZone.ToText(DateTimeZone.LocalNow(), [Format="{0:zzz}"]),
// Displays {0:-07:00} on Power Query Desktop
// Displays {0:+00:00} on Power Query Online
DateTimeZone.ToText(DateTimeZone.UtcNow(),[Format="{0:zzz}"]),
// Displays {0:+00:00}
DateTimeZone.ToText(DateTimeZone.SwitchZone(
#datetimezone(2024, 8, 1, 0, 0, 0, 0, 0), 6),
[Format = "{0:zzz}"]
)
// Displays {0:+06:00}
}
in
Source
注意
DateTimeZone.LocalNow 返回的值取决于是在本地计算机上还是在联机上运行 Power Query。 例如,在美国太平洋时区的系统上的上例中,Power Query Desktop 返回 {0:-07:00}
,因为它正在读取本地计算机上设置的时间。 但是,Power Query Online 返回 {0:+00:00}
是因为它正在读取云虚拟机上设置的时间,这些时间设置为 UTC。
日期和时间分隔符说明符
“:”自定义格式说明符
“:”自定义格式说明符表示时间分隔符,它用于区分小时、分钟和秒。 从当前或指定的区域性检索适当的本地化时间分隔符。
注意
若要更改特定日期和时间字符串的时间分隔符,请指定文本字符串分隔符内的分隔字符。 例如,在自定义格式字符串 hh_dd_ss
产生的结果字符串中,始终将“_”(下划线)用作时间分隔符。
如果使用“:”格式说明符而不使用其他自定义格式说明符,则会将其解释为标准日期和时间格式说明符,并引发表达式错误。 有关使用单个格式说明符的详细信息,请参阅 本文后面的“使用单一自定义格式说明符 ”。
“/”自定义格式说明符
“/”自定义格式说明符表示日期分隔符,它用于区分年、月和日。 从当前或指定的区域性检索相应的本地化日期分隔符。
注意
若要更改特定日期和时间字符串的日期分隔符,请指定文本字符串分隔符内的分隔字符。 例如,在自定义格式字符串 mm/dd/yyyy
产生的结果字符串中,始终将“/”用作日期分隔符。
如果在不使用其他自定义格式说明符的情况下使用“/”格式说明符,则会将其解释为标准日期和时间格式说明符,并引发表达式错误。 有关使用单个格式说明符的详细信息,请参阅 本文后面的“使用单一自定义格式说明符 ”。
字符文本
自定义日期和时间格式字符串中的以下字符是保留的字符,始终解释为格式字符,但 "
、'
、/
和 \
解释为特殊字符。
F
H
K
M
d
f
g
h
m
s
t
y
z
%
:
/
"
'
\
所有其他字符始终解释为字符文本,在格式设置操作中,将按原样包含在结果字符串中。 在分析操作中,这些字符必须与输入字符串中的字符完全匹配;比较时区分大小写。
下面的示例在格式字符串中包含用于表示时区的文本字符“PST”(太平洋标准时间)和“PDT”(太平洋夏令时)。 请注意,该字符串将包含在结果字符串中,并且包含本地时区字符串的字符串也可成功完成分析。
let
#"Date Formats" = {"dd MMM yyyy hh:mm tt PST", "dd MMM yyyy hh:mm tt PDT"},
Source =
{
DateTime.ToText(#datetime(2024, 8, 18, 16, 50, 0), [Format = #"Date Formats"{1}]),
try DateTime.ToText(DateTime.FromText(
"25 Dec 2023 12:00 pm PST", [Format = #"Date Formats"{0}]))
otherwise "Unable to parse '" & "25 Dec 2023 12:00 pm PST" & "'"
}
in
Source
// The example displays the following output text:
// 18 Aug 2024 04:50 PM PDT
// 12/25/2023 12:00:00 PM
可通过两种方法来指示要将字符解释为文本字符而不是保留字符,以便这些字符可以包含在结果字符串中,或者在输入字符串中成功完成分析:
通过转义每个保留字符。 有关详细信息,请转到 使用转义序列。
下面的示例在格式字符串中包含用于表示时区的文本字符“pst”(太平洋标准时间)。 由于“s”和“t”都是自定义格式字符串,因此这两个字符必须经过转义才能解释为字符文本。
let #"Date Format" = "dd MMM yyyy hh:mm tt p's''t'", Source = { DateTime.ToText(#datetime(2024, 8, 18, 16, 50, 0), [Format = #"Date Format"]), try DateTime.ToText(DateTime.FromText( "25 Dec 2023 12:00 pm pst", [Format = #"Date Format"])) otherwise "Unable to parse '" & "25 Dec 2023 12:00 pm pst" & "'" } in Source // The example displays the following output text: // 18 Aug 2024 04:50 PM pst // 12/25/2016 12:00:00 PM
通过将整个文本字符串括在撇号中。 以下示例与上一个示例类似,只不过“pst”括在撇号中,以指示应将整个带分隔符的字符串解释为字符文本。
let #"Date Format" = "dd MMM yyyy hh:mm tt 'pst'", Source = { DateTime.ToText(#datetime(2024, 8, 18, 16, 50, 0), [Format = #"Date Format"]), try DateTime.ToText(DateTime.FromText( "25 Dec 2023 12:00 pm pst", [Format = #"Date Format"])) otherwise "Unable to parse '" & "25 Dec 2023 12:00 pm pst" & "'" } in Source // The example displays the following output text: // 18 Aug 2024 04:50 PM pst // 12/25/2016 12:00:00 PM
备注
使用单个自定义格式说明符
自定义日期和时间格式字符串由两个或更多字符组成。 日期和时间格式设置方法将任何单字符字符串解释标准日期和时间格式字符串。 如果未将字符识别为有效的格式说明符,则会引发表达式错误。 例如,仅包含说明符“h”的格式字符串解释为标准日期和时间格式字符串。 但是,在此特定情况下将引发异常,原因是不存在“h”标准日期和时间格式说明符。
若要将任何自定义日期和时间格式说明符作为格式字符串中的唯一说明符使用(即若要使用“d”、“f”、“F”、“g”、“h”、“H”、“K”、“m”、“M”、“s”、“t”、“y”、“z”、“:”或“/”自定义格式说明符自身),请在该说明符之前或之后添加一个空格,或在单个自定义日期和时间说明符之前包括一个百分号(“%”)格式说明符。
例如,“%h
”将解释为一个自定义日期和时间格式字符串,用于显示当前日期和时间值表示的小时。 也可以使用“ h”或“h ”格式字符串,尽管它在结果字符串及小时中包含一个空格。 下面的示例阐释了这三个格式字符串。
let
date = #datetime(2024, 6, 15, 13, 45, 0),
Source =
{
Text.Format("'#{0}'", {DateTime.ToText(date, [Format = "%h"])}),
Text.Format("'#{0}'", {DateTime.ToText(date, [Format = " h"])}),
Text.Format("'#{0}'", {DateTime.ToText(date, [Format = "h "])})
}
in
Source
// The example displays a list with the following output text,
// with <sp> representing a space:
// '1'
// ' 1'
// '1 '
使用转义序列
格式字符串中的“d”、“f”、“F”、“g”、“h”、“H”、“K”、“m”、“M”、“s”、“t”、“y”、“z”、“:”或“/”字符被解释为自定义格式说明符而不是文本字符。
若要防止将字符解释为格式说明符,可以:
- 将其前面加上反斜杠。
- 用单引号括起来。
- 用两个双引号包围它。
其中每个字符都充当转义序列。 转义序列表示以下字符或环绕字符是应在结果字符串中保持不变的文本文本。
若要在结果字符串中包含双引号,必须使用另一个双引号(""
)对其进行转义。
以下示例使用不同的转义序列来防止格式设置操作将“h”和“m”字符解释为格式说明符。
let
date = #datetime(2024, 6, 15, 13, 45, 30.90),
format1 = "h \h m \m",
format2 = "h ""h"" m ""m""",
format3 = "h 'h' m 'm'",
Source =
{
Text.Format("#{0} (#{1}) -> #{2}", {DateTime.ToText(date), format1, DateTime.ToText(date, format1)}),
Text.Format("#{0} (#{1}) -> #{2}", {DateTime.ToText(date), format2, DateTime.ToText(date, format2)}),
Text.Format("#{0} (#{1}) -> #{2}", {DateTime.ToText(date), format3, DateTime.ToText(date, format3)})
}
in
Source
// The example displays the following output text:
// 6/15/2024 1:45:30 PM (h \h m \m) -> 1 h 45 m
// 6/15/2024 1:45:30 PM (h "h" m "m") -> 1 h 45 m
// 6/15/2024 1:45:30 PM (h 'h' m 'm') -> 1 h 45 m