我知道ET(东部时间)有来自EST和EDT的DST,但我在不同的编程语言和ET的不同库中寻找那个时区不是一个选项,但EST5EDT是。
谢谢。
简短回答:不,他们并不平等,因为EST5EDT
没有美国东部时间所经历的任何变化历史。改为使用America/New_York
。
更长的回答:
EST5EDT
是POSIX时区定义,可以在许多系统上的TZ
环境变量中使用。这种格式在Linux man tz
和the GNU docs以及this article from IBM中有描述。 EST5EDT
告诉你的所有标准时间是UTC-5并标记为EST
,白天时间是UTC-4并标记为EDT
。而已。
随着计算机系统随着时间的推移而发展,很明显POSIX时区没有足够的信息来正确跟踪世界的时区。例如,考虑history of DST in the United States,其中最后一次更改发生在2007年,将日光周期延长了5周。 POSIX定义无法表示此类数据,从而导致转换错误。
因此,现在优选的机制是使用来自IANA TZ Database的时区标识符(也称为“Olson”或“ZoneInfo”)。在此数据库中,美国东部时间由标识符America/New_York
表示。它还有一个别名US/Eastern
,您可以在大多数库(JavaScript,Python等)中使用它们。 You can find a complete list of identifiers here。
你可能会注意到EST5EDT
作为标识符之一,EST
,但不是EDT
。这些是历史的工件,因为TZ数据库中的某些标识符需要向后兼容POSIX时区定义。您现在应该考虑这些已弃用,并且仅使用Area/Locality
形式的标识符。