2012-07-11 10 views
7

संभव डुप्लिकेट:pytz.timezone एशिया/कलकत्ता के लिए अजीब परिणाम दिखाता है?

< DstTzInfo 'Asia/Calcutta' HMT+5:53:00 STD > 

ऐसा क्यों है 5:30 बजे नहीं है: निम्नलिखित
Python datetime object show wrong timezone offset

import pytz, datetime 

pytz.timezone("Asia/Calcutta") 

प्रिंट? मैं टाइमज़ोन अमेरिका/लॉस_एंजेलस में हूं।

उत्तर

18

वर्षों में समय क्षेत्र बदल जाते हैं। http://www.prokerala.com/travel/timezones/Asia/Kolkata?mode=history के अनुसार उस क्षेत्र के लिए मूल ऑफ़सेट 5.88888888889 घंटे या 5 घंटे 53 मिनट था। एक बार जब आप ज़ोन को वास्तविक तिथि पर असाइन करते हैं तो pytz उचित ऑफ़सेट और नामकरण का उपयोग करेगा।

>>> tz = pytz.timezone("Asia/Calcutta") 
>>> tz 
<DstTzInfo 'Asia/Calcutta' HMT+5:53:00 STD> 
>>> tz.localize(datetime.datetime(1901, 7, 10, 12, 0)) 
datetime.datetime(1901, 7, 10, 12, 0, tzinfo=<DstTzInfo 'Asia/Calcutta' HMT+5:53:00 STD>) 
>>> tz.localize(datetime.datetime(2012, 7, 10, 12, 0)) 
datetime.datetime(2012, 7, 10, 12, 0, tzinfo=<DstTzInfo 'Asia/Calcutta' IST+5:30:00 STD>) 
+3

मेरा मानना ​​है कि पागल ऑफसेट वास्तविकता के बहुत करीब थे: कोलकाता देशांतर: 88.369 डिग्री। अब समय ऑफसेट प्राप्त करने के लिए: (88.369/180) x12 = 5.89 जो लगभग 5 घंटे और 53 मिनट तक अनुवाद करता है। बेशक, वास्तविकता ने हर किसी के लिए जीवन को कठिन बना दिया होगा, इसलिए अब ऑफसेट्स को गोलाकार किया गया है। – tigeronk2

+0

यह एक समय ऑफसेट नहीं है जो वास्तव में कानून द्वारा अधिनियमित किया गया था। यह क्षेत्र द्वारा कवर क्षेत्र के लिए [स्थानीय मीन टाइम (एलएमटी)] (https://en.wikipedia.org/wiki/Local_mean_time) का प्रतिबिंब है। आप इसे tz स्रोत डेटा [यहां] (https://github.com/eggert/tz/blob/2017b/asia#L891) में देख सकते हैं। –

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