2010-10-24 16 views
5

मुझे "एटीसी/जीएमटी -5" टाइमज़ोन और यूटीसी के बीच रूपांतरण को समझने में परेशानी हो रही है।पायट्ज़ और एटीसी/जीएमटी -5

>>> dt = datetime(2009, 9, 9, 10, 0) # September 9 2009, 10:00 
>>> gmt_5 = pytz.timezone("Etc/GMT-5") 
>>> gmt_5.localize(dt) 
datetime.datetime(2009, 9, 9, 10, 0, tzinfo=<StaticTzInfo 'Etc/GMT-5'>) 

सब कुछ अब तक ठीक है, लेकिन फिर मैं यूटीसी है कि बदलने की कोशिश:

>>> gmt_5.localize(dt).astimezone(pytz.utc) 
datetime.datetime(2009, 9, 9, 5, 0, tzinfo=<UTC>) 

तो मेरे लिए ऐसा लगता है कि जब यूटीसी के लिए GMT-5 में 10:00 से परिवर्तित मैं 05:00? मैं pytz मुझे 15:00 देने के लिए उम्मीद करेंगे।

मुझे क्या याद आ रही है?

संपादित करें: मैं पुष्टि की है कि अमेरिका/पूर्वी समय क्षेत्र के लिए समय क्षेत्र रूपांतरण बस काम करता है के रूप में मैं उम्मीद थी:

>>> eastern = pytz.timezone("US/Eastern") 
>>> eastern.localize(dt) 
datetime.datetime(2009, 9, 9, 10, 0, tzinfo=...) # Too long 
>>> pytz.utc.normalize(eastern.localize(dt).astimezone(pytz.utc)) 
datetime.datetime(2009, 9, 9, 14, 0, tzinfo=<UTC>) 

संपादित करें 2: मैंने पुष्टि की है कि जब मैं आदि/GMT का उपयोग +5 मुझे 15:00 मिलते हैं, जो मैं एटीसी/जीएमटी -5 से प्राप्त करने की अपेक्षा करता हूं। क्या यह एक पट्ज बग है?

उत्तर

10

यह स्पष्ट रूप से एक पॉज़िक्स चीज़ है। Wikipedia से:

आदेश POSIX शैली के अनुरूप करने के लिए, उन क्षेत्रों "आदि/GMT" के साथ शुरुआत उनके हस्ताक्षर ज्यादातर लोगों क्या उम्मीद से उलट है। इस शैली में, जीएमटी के पश्चिम में जोन के पास सकारात्मक संकेत है और उन पूर्वों में नकारात्मक संकेत है।

+0

आपने 23 सेकंड तक अपना जवाब हराया! :) –

0

This bug report इस व्यवहार को समझाता है। जाहिर है, वे जानते हैं कि यह सब उलटा हुआ है, लेकिन ऐसा इसलिए है क्योंकि कुछ और संगतता तोड़ देगा।

संबंधित मुद्दे