为什么Pytz在纽约和底特律有不同的时区列表?

Cho*_*key 4 python timezone pytz

>>> pytz.country_timezones['US']

America/New_York
America/Detroit
America/Kentucky/Louisville
America/Kentucky/Monticello
America/Indiana/Indianapolis
America/Indiana/Vincennes
America/Indiana/Winamac
America/Indiana/Marengo
America/Indiana/Petersburg
America/Indiana/Vevay
America/Chicago
America/Indiana/Tell_City
America/Indiana/Knox
America/Menominee
America/North_Dakota/Center
America/North_Dakota/New_Salem
America/North_Dakota/Beulah
America/Denver
America/Boise
America/Phoenix
America/Los_Angeles
America/Metlakatla
America/Anchorage
America/Juneau
America/Sitka
America/Yakutat
America/Nome
America/Adak
Pacific/Honolulu
Run Code Online (Sandbox Code Playgroud)

从我在网上找到的所有内容来看,纽约和底特律时区之间绝对没有区别,包括DST.这只是检查前两个.他们必须有两个理由,对吗?

编辑:扩展我的研究,所有列出的UTC -5的时区都有相同的DST信息,所以现在看起来更加冗余.我可以在东部标准时间删除以下所有内容......这样做有什么问题吗?

(UTC -5:00) New_York
(UTC -5:00) Detroit
(UTC -5:00) Kentucky/Louisville
(UTC -5:00) Kentucky/Monticello
(UTC -5:00) Indiana/Indianapolis
(UTC -5:00) Indiana/Vincennes
(UTC -5:00) Indiana/Winamac
(UTC -5:00) Indiana/Marengo
(UTC -5:00) Indiana/Petersburg
(UTC -5:00) Indiana/Vevay
Run Code Online (Sandbox Code Playgroud)

Rog*_*yer 7

Pytz使用IANA时区数据库(也称为Olson数据库).正如@brenbarn所提到的,IANA数据库中的时区反映了"自1970年 1月1 以来本地时钟都已达成一致的任何国家区域.",其中不仅包括时间,还包括DST更改.

根据该数据库,"密歇根大部分地区从1973年开始观察DST,但1975年有点晚了." 所以这意味着1970年密歇根州在东部时间,而东海岸则观察到夏令时.此外,DST直到1975年才在密歇根州开始,直到4月27日,也就是东部时区剩余时间后几周.

如果您下载最新的文件,应该有各种文件(northamerica,southamerica,africa等),这些文件具有人类可读的不同时区的描述,以及任何更改/原因的解释不同的时区.


为了建立你的编辑,印第安纳代表了美国境内的一个特例,因为它在两个时区之间的边界线上的历史存在.截至2014年11月,印第安纳大部分位于东部时区(除芝加哥附近的几个县和中部时间的埃文斯维尔附近),整个州都遵守夏令时.但自1970年以来,中/东边界已经发生了相当多的变化.事实上,我敢打赌,大部分时区发生在2006年和2007再次切换区域时,在此过程中采用了夏令时.