首页 > 解决方案 > EST5EDT 等于 ET 吗?

问题描述

我知道 ET(东部时间)有来自 EST 和 EDT 的 DST,但我在不同编程语言的不同库中寻找那个时区,ET 不是一个选项,但 EST5EDT 是。

谢谢。

标签: javascriptpythontimezonepytz

解决方案


简短回答:不,它们不相等,因为EST5EDT没有美国东部时间所经历的任何变化历史。改用America/New_York,确实如此。


更长的答案:

EST5EDT是一个POSIX 时区定义,可以TZ在许多系统的环境变量中使用。这种格式在Linuxman tzGNU 文档以及IBM 的这篇文章中都有描述。告诉EST5EDT您的只是标准时间是 UTC-5 并标记为EST,而日光时间是 UTC-4 并标记为EDT。而已。

随着计算机系统随着时间的推移而发展,很明显 POSIX 时区不包含足够的信息来正确跟踪世界时区。例如,考虑美国 DST 的历史,其中最后一次更改发生在 2007 年,将日光时间延长了 5 周。POSIX 定义无法表示此类数据,从而导致转换错误。

因此,现在首选的机制是使用来自IANA TZ 数据库的时区标识符(也称为“Olson”或“ZoneInfo”)。在此数据库中,美国东部时间由标识符 表示America/New_York。它还有一个别名US/Eastern,您可以在大多数库(JavaScript、Python 等)中使用。 您可以在此处找到完整的标识符列表

您可能会注意到它EST5EDT显示为标识符之一,与 一样EST,但不是EDT。这些是历史产物,因为 TZ 数据库中的某些标识符需要向后兼容 POSIX 时区定义。您现在应该考虑弃用这些,并且只使用Area/Locality标识符的形式。


推荐阅读