2011-09-29 19 views
11

मैं यह निर्धारित करने की एक विधि की तलाश कर रहा हूं कि जब एक पाइथन स्क्रिप्ट में दिए गए टाइमज़ोन के लिए डीएसटी शुरू होता है या समाप्त होता है तो मैं काम कर रहा हूं।पाइथन में किसी विशिष्ट स्थान पर डीएसटी कब शुरू होता है या समाप्त होता है यह निर्धारित करने के लिए कैसे करें?

मुझे पता है pytz यूटीसी तिथियों को परिवर्तित कर सकता है जो मैं स्थानीय समय में काम कर रहा हूं, और डीएसटी को ध्यान में रखूंगा, हालांकि इस विशेष एप्लिकेशन के लिए मुझे बदलाव के बिंदु को जानने की जरूरत है।

कोई सुझाव?

+2

जो वर्ष के लिए ? कुछ समय क्षेत्र में इतिहास में डीएसटी परिवर्तन बिंदु बदल गए हैं। – 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)] 

यह आपको डीएसटी परिवर्तन तिथियों (डीएसटी की शुरुआत और अंत) की सूची देगा।

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 

तो के अनुसार अगर आप _transition_info आप अपने सभी की जरूरत जानकारियां, तिथि, समय हड़पने जाएगा साथ _utc_transition_times मिश्रण और लागू करने के लिए ऑफसेट;)

+0

यह बहुत अच्छी तरह से दिखता है। उस विशेषता के बारे में नहीं पता था। – eumiro

+0

मैं इसे जल्द ही कोशिश करता हूं जैसे ही मैं घर हूं, धन्यवाद। क्या उन तिथियां डीएसटी की शुरुआत या अंत को चिह्नित करती हैं? – Smingos

+0

यूरोप/पेरिस के लिए डीएसटी की शुरुआत मार्च में ज्यादातर है, इसका अंत सितंबर/अक्टूबर में है। लेकिन चूंकि ये तिथियां __changes__ हैं, इसलिए आप इस सूची में विषम/यहां तक ​​कि स्थिति पर भरोसा कर सकते हैं। – eumiro