pytz で特定のタイムゾーンの DST 境界を取得することは可能ですか?
3490 次
1 に答える
21
公式にはサポートされていないようです。ただし、DstTzInfo
オブジェクトの内部を突いてそこから取得することはできます。
>>> from pytz import timezone
>>> tz = timezone('Europe/London')
>>> tz._utc_transition_times
[datetime.datetime(1, 1, 1, 0, 0), datetime.datetime(1916, 5, 21, 2, 0),
...
datetime.datetime(2036, 3, 30, 1, 0), datetime.datetime(2036, 10, 26, 1, 0),
datetime.datetime(2037, 3, 29, 1, 0), datetime.datetime(2037, 10, 25, 1, 0)]
各エントリは、次のエントリに対応してい_transition_info
ます。
>>> tz._transition_info
[(datetime.timedelta(0), datetime.timedelta(0), 'GMT'),
(datetime.timedelta(0, 3600), datetime.timedelta(0, 3600), 'BST'),
...
(datetime.timedelta(0, 3600), datetime.timedelta(0, 3600), 'BST'),
(datetime.timedelta(0), datetime.timedelta(0), 'GMT'),
(datetime.timedelta(0, 3600), datetime.timedelta(0, 3600), 'BST'),
(datetime.timedelta(0), datetime.timedelta(0), 'GMT')]
ソースは、これらが何を意味するかを教えてくれます。
_utc_transition_times = None # Sorted list of DST transition times in UTC
_transition_info = None # [(utcoffset, dstoffset, tzname)] corresponding
# to _utc_transition_times entries
もちろん、これは実装依存であり、動作することが知られている特定のバージョンの pytz に依存したいと思うでしょう。
于 2011-09-10T17:56:14.007 に答える