15

作業中のPythonスクリプトで、特定のタイムゾーンでDSTがいつ開始または終了するかを決定する方法を探しています。

pytzは、作業中のUTC日付を現地時間に変換でき、DSTを考慮に入れることができますが、この特定のアプリケーションでは、切り替えのポイントを知る必要があります。

助言がありますか?

4

1 に答える 1

23

_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)]

DSTの変更日のリスト(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

したがって、とを組み合わせる_utc_transition_times_transition_info、必要なすべての情報、日付、時刻、およびオフセットを取得して適用できます;)

于 2011-09-29T08:51:37.787 に答える