如何确定DST何时在Python中的特定位置开始或结束?

Smi*_*gos 13 python timezone pytz dst

我正在寻找一种方法来确定DST在我正在处理的Python脚本中何时开始或结束给定时区.

我知道pytz可以将我正在工作的UTC日期转换为本地时间,并且会考虑DST,但是对于这个特定的应用程序,我需要知道转换的重点.

有什么建议?

Céd*_*ien 21

您可以查看_utc_transition_times您正在使用的时区的成员.

>>> from pytz import timezone
>>> tz = timezone("Europe/Paris")
>>> print tz._utc_transition_times

[datetime.datetime(1, 1, 1, 0, 0), datetime.datetime(1911, 3, 10, 23, 51, 39), datetime.datetime(1916, 6, 14, 23, 0), datetime.datetime(1916, 10, 1, 23, 0), date
....
 datetime.datetime(2037, 3, 29, 1, 0), datetime.datetime(2037, 10, 25, 1, 0)]
Run Code Online (Sandbox Code Playgroud)

它将为您提供DST更改日期列表(夏令时的开始和结束).

根据tzinfo.py的代码

class DstTzInfo(BaseTzInfo):
    '''A timezone that has a variable offset from UTC

    The offset might change if daylight savings time comes into effect,
    or at a point in history when the region decides to change their
    timezone definition.
    '''
    # Overridden in subclass
    _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)

因此,如果您混合使用_utc_transition_times,_transition_info您将获取所有需要的信息,日期,时间和偏移量以应用;)