Python时区 - pytz.common_timezones数量过多

10 投票
2 回答
1288 浏览
提问于 2025-04-16 01:06

在pytz这个库的常用时区列表中,有太多重复的时区了。有没有人把这些重复的时区整理过?比如说,加拿大的时区就有5到6个重复的,而美国的时区大约有15个重复的。中国只有一个时区,而且没有夏令时,但却有5个条目。这里说的重复是指它们的GMT偏移量和夏令时设置完全相同。

如果把pytz.country_timezones['us']里的时区去掉,就能去掉重复的美国时区,因为它只包含了America/*的时区,而不包括基础的US/*时区。不过,这个方法对其他国家就不管用了。

2 个回答

1

这里有一个不再使用的时区列表:

https://github.com/stub42/pytz/blob/a11229c46f79ed377ff8e1006ccb98b1b38c4ad0/tz/backward

不过,看起来这个列表里缺少了一些重复的时区。

pytz.common_timezones 中,有十三个时区是从那个列表中不再使用的:

[
    'Canada/Atlantic',
    'Canada/Central',
    'Canada/Eastern',
    'Canada/Mountain',
    'Canada/Newfoundland',
    'Canada/Pacific',
    'US/Alaska',
    'US/Arizona',
    'US/Central',
    'US/Eastern',
    'US/Hawaii',
    'US/Mountain',
    'US/Pacific',
]
2

我觉得这个主意不好。在澳大利亚,墨尔本和悉尼通常是同一个时区,但夏令时(DST)开始和结束的时间是由两个不同的机构来决定的。

几年前,墨尔本举办了英联邦运动会,他们为了方便,特意在那一年调整了夏令时的时间。我记得悉尼好像也为了避免混淆而做了调整,但他们的决定是和墨尔本分开做的。

撰写回答