2011-09-29 2 views
11

私が作業しているPythonスクリプトで、指定されたタイムゾーンでDSTが開始されるか終了するかを判断する方法を探しています。Pythonの特定の場所でDSTが開始されるか終了するかを特定する方法は?

pytzは私がlocaltimeに取り組んでいるUTCの日付を変換することができますが、この特定のアプリケーションではDSTを考慮に入れますが、私は切り替えのポイントを知る必要があります。

提案がありますか?

+2

?一部のタイムゾーンでは、DSTの変更ポイントが変更されました。 – eumiro

+0

まあ、理想的には、私は任意の年にそれをすることができるようにしたいと思います。この種の情報はオルセンのデータベースで入手できますが、それにアクセスすることは別の問題です。 – Smingos

答えて

14

あなたは使用している時間帯のメンバーの_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の開始日と終了日)の一覧が表示されます。

あなたはすべてのあなたの必要な情報、日付、時間をつかむだろう_transition_info_utc_transition_timesをミックスして適用するオフセットが

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 

のでtzinfo.pyのコードによる;)年度

+0

これは非常によく見えます。その属性について知りませんでした。 – eumiro

+0

私は家に帰るとすぐに試してみるよ、ありがとう。これらの日付はDSTの開始日または終了日を示しますか? – Smingos

+0

ヨーロッパ/パリの場合、DSTの開始は主に3月に終了し、9月/ 10月に終了します。しかし、これらの日付は__changes__であるため、このリストの奇数/偶数の位置をカウントできます。 – eumiro

関連する問題