jq strftime() 显示特定时区的时间
Jq strftime() to show time in a specific time zone
如何使用 jq 将自 Unix 纪元以来的秒数转换为人类可读格式但已调整为澳大利亚悉尼时区的时间字符串?
我试过过滤器:
now | strftime("%Y-%m-%dT%H:%M:%SZ")
但我不知道如何调整时间格式字符串来传达澳大利亚悉尼时区。
可能我需要用相关时区替换“Z”?
如果您使用的是 jq v1.6,请使用 strflocaltime
而不是 strftime
,后者显示 您的 时区的时间。
jq -n 'now | strflocaltime("%Y-%m-%dT%H:%M:%S")'
来自manual:
The strftime(fmt)
builtin formats a time (GMT) with the given format. The strflocaltime
does the same, but using the local timezone setting.
如果您的时区不同,请在调用 jq
之前相应地设置 shell 的 TZ
变量
TZ=Australia/Sydney jq -n 'now | strflocaltime("%Y-%m-%dT%H:%M:%S")'
以下两个都转换为TZ
环境变量var指示的时区:
localtime | strftime(...)
strflocaltime(...)
例如,
$ jq -nr 'now | strftime("%FT%T")'
2022-02-14T06:14:07
$ jq -nr 'now | gmtime | strftime("%FT%T")'
2022-02-14T06:14:07
$ jq -nr 'now | localtime | strftime("%FT%T")'
2022-02-14T02:14:07
$ jq -nr 'now | strflocaltime("%FT%T")'
2022-02-14T02:14:07
这使用您的本地时间,由 TZ
环境变量确定。根据需要进行调整。
$ TZ=America/Halifax jq -nr 'now | strflocaltime("%FT%T")'
2022-02-14T02:14:07
$ TZ=America/Toronto jq -nr 'now | strflocaltime("%FT%T")'
2022-02-14T01:14:07
$ TZ=America/Vancouver jq -nr 'now | strflocaltime("%FT%T")'
2022-02-14T22:14:07
如果您想在 jq
中的单个 运行 中转换为不同的时区,那您就不走运了。 jq
不支持转换 to/from 个除 UTC 和本时区以外的时区。
同时测试了 1.5 和 1.6。
如何使用 jq 将自 Unix 纪元以来的秒数转换为人类可读格式但已调整为澳大利亚悉尼时区的时间字符串?
我试过过滤器:
now | strftime("%Y-%m-%dT%H:%M:%SZ")
但我不知道如何调整时间格式字符串来传达澳大利亚悉尼时区。
可能我需要用相关时区替换“Z”?
如果您使用的是 jq v1.6,请使用 strflocaltime
而不是 strftime
,后者显示 您的 时区的时间。
jq -n 'now | strflocaltime("%Y-%m-%dT%H:%M:%S")'
来自manual:
The
strftime(fmt)
builtin formats a time (GMT) with the given format. Thestrflocaltime
does the same, but using the local timezone setting.
如果您的时区不同,请在调用 jq
TZ
变量
TZ=Australia/Sydney jq -n 'now | strflocaltime("%Y-%m-%dT%H:%M:%S")'
以下两个都转换为TZ
环境变量var指示的时区:
localtime | strftime(...)
strflocaltime(...)
例如,
$ jq -nr 'now | strftime("%FT%T")'
2022-02-14T06:14:07
$ jq -nr 'now | gmtime | strftime("%FT%T")'
2022-02-14T06:14:07
$ jq -nr 'now | localtime | strftime("%FT%T")'
2022-02-14T02:14:07
$ jq -nr 'now | strflocaltime("%FT%T")'
2022-02-14T02:14:07
这使用您的本地时间,由 TZ
环境变量确定。根据需要进行调整。
$ TZ=America/Halifax jq -nr 'now | strflocaltime("%FT%T")'
2022-02-14T02:14:07
$ TZ=America/Toronto jq -nr 'now | strflocaltime("%FT%T")'
2022-02-14T01:14:07
$ TZ=America/Vancouver jq -nr 'now | strflocaltime("%FT%T")'
2022-02-14T22:14:07
如果您想在 jq
中的单个 运行 中转换为不同的时区,那您就不走运了。 jq
不支持转换 to/from 个除 UTC 和本时区以外的时区。
同时测试了 1.5 和 1.6。