- OpenTofu 语言
- 函数
- formatdate
formatdate
函数
formatdate
将时间戳转换为不同的时间格式。
formatdate(spec, timestamp)
在 OpenTofu 语言中,时间戳通常使用 RFC 3339“日期和时间格式”语法表示为字符串。formatdate
要求 timestamp
参数为符合此语法的字符串。
示例
> formatdate("DD MMM YYYY hh:mm ZZZ", "2018-01-02T23:12:01Z")
02 Jan 2018 23:12 UTC
> formatdate("EEEE, DD-MMM-YY hh:mm:ss ZZZ", "2018-01-02T23:12:01Z")
Tuesday, 02-Jan-18 23:12:01 UTC
> formatdate("EEE, DD MMM YYYY hh:mm:ss ZZZ", "2018-01-02T23:12:01-08:00")
Tue, 02 Jan 2018 23:12:01 -0800
> formatdate("MMM DD, YYYY", "2018-01-02T23:12:01Z")
Jan 02, 2018
> formatdate("HH:mmaa", "2018-01-02T23:12:01Z")
11:12pm
规范语法
格式规范是一个字符串,其中包含下表中的格式化序列。此函数旨在生成常见的面向机器的时间戳格式,例如 RFC822、RFC850 和 RFC1123 中定义的格式。它不适用于真正面向人类的日期格式化,因为它不考虑区域设置。特别是,它只能生成英文的月份和日期名称。
规范可能包含以下序列
序列 | 结果 |
---|---|
YYYY | 四位(或更多位)数字年份,例如“2006”。 |
YY | 年份模 100,至少两位数字的零填充,例如“06”。 |
MMMM | 英文月份名称未缩写,例如“January”。 |
MMM | 英文月份名称缩写为三个字母,例如“Jan”。 |
MM | 月份数字零填充到两位数字,例如 1 月为“01”。 |
M | 月份数字不带填充,例如 1 月为“1”。 |
DD | 月份中的日期数字零填充到两位数字,例如“02”。 |
D | 月份中的日期数字不带填充,例如“2”。 |
EEEE | 英文星期几名称未缩写,例如“Monday”。 |
EEE | 英文星期几名称缩写为三个字母,例如“Mon”。 |
hh | 24 小时制数字零填充到两位数字,例如“02”。 |
h | 24 小时制数字不带填充,例如“2”。 |
HH | 12 小时制数字零填充到两位数字,例如“02”。 |
H | 12 小时制数字不带填充,例如“2”。 |
AA | 小时 AM/PM 标记大写,例如“AM”。 |
aa | 小时 AM/PM 标记小写,例如“am”。 |
mm | 小时内的分钟零填充到两位数字,例如“05”。 |
m | 小时内的分钟不带填充,例如“5”。 |
ss | 分钟内的秒数零填充到两位数字,例如“09”。 |
s | 分钟内的秒数,例如“9”。 |
ZZZZZ | 时区偏移量,用冒号分隔小时和分钟,例如“-08:00”。 |
ZZZZ | 时区偏移量,仅带符号和数字,例如“-0800”。 |
ZZZ | 类似ZZZZ ,但 UTC 为“UTC”的特殊情况。 |
Z | 类似ZZZZZ ,但 UTC 为“Z”的特殊情况。 |
任何非字母字符,例如标点符号,都会在输出中逐字复制。要在格式字符串中包含字面字母,请将它们括在单引号'
中。要包含字面引号,请将其加倍转义。
> formatdate("h'h'mm", "2018-01-02T23:12:01-08:00")
23h12
> formatdate("H 'o''clock'", "2018-01-02T23:12:01-08:00")
11 o'clock
此格式规范语法旨在使读者即使不是语法专家也能轻松猜测结果格式。因此,没有为常用格式预定义简写,但下面给出了各种 RFC 指定格式的格式字符串,可根据需要复制到您的配置中
- RFC 822 和 RFC RFC 2822:
"DD MMM YYYY hh:mm ZZZ"
- RFC 850:
"EEEE, DD-MMM-YY hh:mm:ss ZZZ"
- RFC 1123:
"EEE, DD MMM YYYY hh:mm:ss ZZZ"
- RFC 3339:
"YYYY-MM-DD'T'hh:mm:ssZ"
(但这也是输入格式,因此这种转换是冗余的。)