date 显示 EDT 时间

Ali*_*ice 5 command-line bash

我想查看时间

美国华盛顿特区东部夏令时时区 (GMT-4) 2019 年 5 月 9 日,星期四,晚上 8:11

然而,

$ TZ="EDT" date
Fri May 10 00:12:25 EDT 2019
Run Code Online (Sandbox Code Playgroud)

“EST”工作正常

$ TZ="EST" date
Thu May  9 19:13:11 EST 2019
Run Code Online (Sandbox Code Playgroud)

有什么问题?

Kul*_*lfy 12

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
Run Code Online (Sandbox Code Playgroud)

EDT 的时区是“EST5EDT”。TZ="EST5EDT" date截至 2019 年 5 月 10 日 02:11:26 UTC的输出:

Thu May  9 22:11:26 EDT 2019
Run Code Online (Sandbox Code Playgroud)

或者使用使用 EDT 的城市名称。示例:美国/肯塔基/路易斯维尔、美国/肯塔基/蒙蒂塞洛、美国/纽约、加拿大/东部等。

为什么 EDT 是 EST5EDT?

简而言之,它是一个标准。时区的写法类似于Timezone-Offset。这里-是减号,或者可以说对于 UTC 之前的时区写成Timezone-Offset ,而对于 UTC 之后的时区,它写成TimezoneOffset。如果时区有一个漂亮的名字,比如东部标准时间,它可以写成ESTEST5。两者都会产生相同的结果。

现在,并非在任何地方(例如印度)都遵守夏令时 (DST)。对于观察到的时区,时区写为Timezone-OffsetTimezoneDST,例如:EET-2EETDST (Cyprus) 但如果 DST 有像 BST(英国夏令时间)这样的花哨名称,则写为Timezone-OffsetFancy_name,即GMT0BST . 类似地,EDTEST5EDT。在此 Oracle 文档中,您可以看到所有标准化时区。


chi*_*cks 11

EDT在国际上考虑时是模棱两可的。你可以通过做得到你正在寻求的时间

$ TZ="America/New_York" date
Thu May  9 22:11:16 EDT 2019
Run Code Online (Sandbox Code Playgroud)