在python中获取给定时区的DST边界

nna*_*ski 11 python pytz

是否有可能使用pytz获得给定时区的DST边界?

Tho*_*mas 17

它似乎没有得到官方支持.但是,你可以戳一个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)]
Run Code Online (Sandbox Code Playgroud)

每个条目对应于以下条目_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')]
Run Code Online (Sandbox Code Playgroud)

来源告诉我们这意味着什么:

_utc_transition_times = None # Sorted list of DST transition times in UTC
_transition_info = None # [(utcoffset, dstoffset, tzname)] corresponding
                        # to _utc_transition_times entries
Run Code Online (Sandbox Code Playgroud)

当然,这是依赖于实现的,您可能希望依赖于已知可用的特定版本的pytz.

  • 谁知道?您正在访问以下划线开头的字段,该下划线不是文档化API的一部分.pytz作者可能随时改变它. (3认同)