2011-09-29 11 views
11

DST'nin bir Python komut dosyasında belirli bir saat dilimi için ne zaman başladığını veya bittiğini belirleme yöntemini arıyorum.DST'nin Python'da belirli bir konumda ne zaman başladığını veya bittiğini nasıl belirleyebilirim?

Biliyorum pytz UTC tarihlerini dönüştürebilirim, lokal olarak çalışıyorum ve DST'yi hesaba katacağım, ancak bu özel uygulama için değişimin noktasını bilmem gerekiyor.

Herhangi bir öneriniz var mı?

+2

? Bazı saat dilimlerinde DST değişim noktaları değişmiştir. – eumiro

+0

Eh, ideal olarak keyfi bir yıl için bunu yapmak istiyorum. Bu tür bilgilerin Olsen veritabanında olduğunu biliyorum, ancak buna erişmek başka bir konudur. – Smingos

cevap

14

Kullandığınız saat dilimi için _utc_transition_times memberof'a bakabilirsiniz.

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

Size DST değişiklik tarihlerinin listesini verir (DST'nin başlangıcı ve bitişi).

size tüm gerekli bilgiler, tarih, saat çekecek _transition_info ile _utc_transition_times karıştırıp uygulamak için ofset eğer

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 

Yani tzinfo.py koduna göre;) yıl için

+0

Bu çok iyi görünüyor. Bu özelliği bilmiyordum. – eumiro

+0

Evdeyim en kısa sürede bunu deneyeceğim. Bu tarihler DST'nin başlangıcını mı yoksa bitişini mi işaret ediyor? – Smingos

+0

Avrupa/Paris için DST'nin başlangıcı çoğunlukla Mart ayında, Eylül/Ekim ayında sona eriyor. Fakat bu tarihler __changes__ olduğundan, bu listedeki tek/çift pozisyona güvenebilirsiniz. – eumiro

İlgili konular