显示 EDT 时间的日期

显示 EDT 时间的日期

我想查看时间

东部夏令时间 美国华盛顿特区时区 (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" dateEDT 的时区为“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

相关内容