TZ数据库和多个美国时区

gro*_*pot 1 python django timezone pytz

我使用pytz将时区与我的用户配置文件相关联.最初我认为它只包括PST,CST,EST等时区,但是当我运行时,pytz.country_timezones('US')我会收到以下列表:
[u'America/New_York', u'America/Detroit', u'America/Kentucky/Louisville', u'America/Kentucky/Monticello', u'America/Indiana/Indianapolis', u'America/Indiana/Vincennes', u'America/Indiana/Winamac', u'America/Indiana/Marengo', u'America/Indiana/Petersburg', u'America/Indiana/Vevay', u'America/Chicago', u'America/Indiana/Tell_City', u'America/Indiana/Knox', u'America/Menominee', u'America/North_Dakota/Center', u'America/North_Dakota/New_Salem', u'America/North_Dakota/Beulah', u'America/Denver', u'America/Boise', u'America/Phoenix', u'America/Los_Angeles', u'America/Metlakatla', u'America/Anchorage', u'America/Juneau', u'America/Sitka', u'America/Yakutat', u'America/Nome', u'America/Adak', u'Pacific/Honolulu']

另外:
pytz.all_timezones== 582 pytz.common_timezones== 432

我住在德克萨斯州,总是选择芝加哥,因为这就是互联网的运作方式,但现在我必须考虑到这一点,我真的很困惑我们应该在我们的应用程序中使用哪些时区,哪些是多余的.例如,America/Kentucky/LouisvilleAmerica/Kentucky/Monticello相同 - 为什么它们都存在?我知道这与印第安纳州的历史时区惨败有关,但为什么数据库没有更新以删除冗余?

我从来没有住在印第安纳州所以我不知道居民习惯于看到什么时区.另外由于像亚利桑那州这样的异常人员没有参与DST,它并不像仅包括PST,CST等那么简单.

是否有一些正式的TZ数据库时区子集可以解释所有美国居民?

Jon*_*eet 5

例如,America/Kentucky/Louisville与America/Kentucky/Monticello相同 - 为什么它们都存在?

因为它们一样.从现在开始,他们可能会遵守相同的规则,但他们并非总是如此.为他们设置单独的区域ID意味着在过去的某个时刻,您仍然可以确定当时的当地时间.

在路易斯维尔和蒙蒂塞洛的案例中,看看数据看起来与最近的20世纪90年代不同.以下是20世纪90年代的数据,根据区域观察到的名称和偏移的时间段:

America/Kentucky/Louisville
EST: [1989-10-29T06:00:00Z, 1990-04-01T07:00:00Z) -05 (+00)
EDT: [1990-04-01T07:00:00Z, 1990-10-28T06:00:00Z) -04 (+01)
EST: [1990-10-28T06:00:00Z, 1991-04-07T07:00:00Z) -05 (+00)
EDT: [1991-04-07T07:00:00Z, 1991-10-27T06:00:00Z) -04 (+01)
EST: [1991-10-27T06:00:00Z, 1992-04-05T07:00:00Z) -05 (+00)
EDT: [1992-04-05T07:00:00Z, 1992-10-25T06:00:00Z) -04 (+01)
EST: [1992-10-25T06:00:00Z, 1993-04-04T07:00:00Z) -05 (+00)
EDT: [1993-04-04T07:00:00Z, 1993-10-31T06:00:00Z) -04 (+01)
EST: [1993-10-31T06:00:00Z, 1994-04-03T07:00:00Z) -05 (+00)
EDT: [1994-04-03T07:00:00Z, 1994-10-30T06:00:00Z) -04 (+01)
EST: [1994-10-30T06:00:00Z, 1995-04-02T07:00:00Z) -05 (+00)
EDT: [1995-04-02T07:00:00Z, 1995-10-29T06:00:00Z) -04 (+01)
EST: [1995-10-29T06:00:00Z, 1996-04-07T07:00:00Z) -05 (+00)
EDT: [1996-04-07T07:00:00Z, 1996-10-27T06:00:00Z) -04 (+01)
EST: [1996-10-27T06:00:00Z, 1997-04-06T07:00:00Z) -05 (+00)
EDT: [1997-04-06T07:00:00Z, 1997-10-26T06:00:00Z) -04 (+01)
EST: [1997-10-26T06:00:00Z, 1998-04-05T07:00:00Z) -05 (+00)
EDT: [1998-04-05T07:00:00Z, 1998-10-25T06:00:00Z) -04 (+01)
EST: [1998-10-25T06:00:00Z, 1999-04-04T07:00:00Z) -05 (+00)
EDT: [1999-04-04T07:00:00Z, 1999-10-31T06:00:00Z) -04 (+01)
EST: [1999-10-31T06:00:00Z, 2000-04-02T07:00:00Z) -05 (+00)

America/Kentucky/Monticello
CST: [1989-10-29T07:00:00Z, 1990-04-01T08:00:00Z) -06 (+00)
CDT: [1990-04-01T08:00:00Z, 1990-10-28T07:00:00Z) -05 (+01)
CST: [1990-10-28T07:00:00Z, 1991-04-07T08:00:00Z) -06 (+00)
CDT: [1991-04-07T08:00:00Z, 1991-10-27T07:00:00Z) -05 (+01)
CST: [1991-10-27T07:00:00Z, 1992-04-05T08:00:00Z) -06 (+00)
CDT: [1992-04-05T08:00:00Z, 1992-10-25T07:00:00Z) -05 (+01)
CST: [1992-10-25T07:00:00Z, 1993-04-04T08:00:00Z) -06 (+00)
CDT: [1993-04-04T08:00:00Z, 1993-10-31T07:00:00Z) -05 (+01)
CST: [1993-10-31T07:00:00Z, 1994-04-03T08:00:00Z) -06 (+00)
CDT: [1994-04-03T08:00:00Z, 1994-10-30T07:00:00Z) -05 (+01)
CST: [1994-10-30T07:00:00Z, 1995-04-02T08:00:00Z) -06 (+00)
CDT: [1995-04-02T08:00:00Z, 1995-10-29T07:00:00Z) -05 (+01)
CST: [1995-10-29T07:00:00Z, 1996-04-07T08:00:00Z) -06 (+00)
CDT: [1996-04-07T08:00:00Z, 1996-10-27T07:00:00Z) -05 (+01)
CST: [1996-10-27T07:00:00Z, 1997-04-06T08:00:00Z) -06 (+00)
CDT: [1997-04-06T08:00:00Z, 1997-10-26T07:00:00Z) -05 (+01)
CST: [1997-10-26T07:00:00Z, 1998-04-05T08:00:00Z) -06 (+00)
CDT: [1998-04-05T08:00:00Z, 1998-10-25T07:00:00Z) -05 (+01)
CST: [1998-10-25T07:00:00Z, 1999-04-04T08:00:00Z) -06 (+00)
CDT: [1999-04-04T08:00:00Z, 1999-10-31T07:00:00Z) -05 (+01)
CST: [1999-10-31T07:00:00Z, 2000-04-02T08:00:00Z) -06 (+00)
Run Code Online (Sandbox Code Playgroud)