我想查看时间
东部夏令时间 美国华盛顿特区时区 (GMT-4) 2019 年 5 月 9 日星期四下午 8:11
然而,
$ TZ="EDT" date
Fri May 10 00:12:25 EDT 2019
“EST” 正常运行
$ TZ="EST" date
Thu May 9 19:13:11 EST 2019
有什么问题?
答案1
date
命令不知道“EDT”时区。如果在 TZ 中传递了不支持的时区,则输出确实会显示输入的时区,但显示的时间将是 UTC。
支持的时区列于/usr/share/zoneinfo/。截至目前,可以用作“TZ”值的时区包括:
Africa Cuba GMT0 Japan Pacific Turkey
America EET GMT-0 Kwajalein Poland UCT
Antarctica Egypt GMT+0 leap-seconds.list Portugal Universal
Arctic Eire Greenwich Libya posix US
Asia EST Hongkong localtime posixrules UTC
Atlantic EST5EDT HST MET PRC WET
Australia Etc Iceland Mexico PST8PDT W-SU
Brazil Europe Indian MST right zone1970.tab
Canada Factory Iran MST7MDT ROC zone.tab
CET GB iso3166.tab Navajo ROK Zulu
Chile GB-Eire Israel NZ Singapore
CST6CDT GMT Jamaica NZ-CHAT SystemV
TZ="EST5EDT" date
EDT 的时区为“EST5EDT”。截至 2019 年 5 月 10 日 02:11:26 UTC的输出:
Thu May 9 22:11:26 EDT 2019
或者在使用 EDT 的地方使用城市名称。例如:America/Kentucky/Louisville、America/Kentucky/Monticello、America/New_York、Canada/Eastern 等。
为什么EDT是EST5EDT?
简而言之,这是一个标准。时区写法如下时区偏移。 这里-为负数,或者说早于 UTC 的时区写成时区偏移对于 UTC 之后的时区,则写为时区偏移如果时区有一个好听的名字,比如东部标准时间,那么可以写成美东时间或者EST5. 两者都会产生相同的结果。
现在,并非所有地方都实行夏令时 (DST)(例如印度)。对于实行夏令时的时区,时区写为时区偏移时区DST, 例子:东风-2EETDST(塞浦路斯)但如果 DST 有一个像 BST(英国夏令时)这样的花哨名称,则写为时区偏移Fancy_name, IE格林威治标准时间0BST. 类似地,美东时间是东部夏令时间。 在此 Oracle 文档您可以看到所有标准化时区。
答案2
EDT
在国际上被认为是模棱两可的。您可以通过以下方式获得所需的时间:
$ TZ="America/New_York" date
Thu May 9 22:11:16 EDT 2019