2012-07-11 11 views

Antwort

18

Zeitzonen ändern sich im Laufe der Jahre. Gemäß http://www.prokerala.com/travel/timezones/Asia/Kolkata?mode=history betrug der ursprüngliche Offset für diese Zone 5,88888888889 Stunden oder 5 Stunden 53 Minuten. pytz verwendet den korrekten Offset und die korrekte Nomenklatur, sobald Sie die Zone einem tatsächlichen Datum zugewiesen haben.

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

Ich glaube, verrückter Offsets waren viel näher an der Realität: Kolkata Länge: 88,369 Grad. Um nun den Zeitversatz zu erhalten: (88,369/180) x12 = 5,89, was ungefähr 5 Stunden und 53 Minuten entspricht. Natürlich muss die Realität allen das Leben schwer gemacht haben, daher jetzt abgerundet. – tigeronk2

+0

Das ist kein Zeitversatz, der tatsächlich per Gesetz erlassen wurde. Es ist einfach eine Reflektion von [lokale mittlere Zeit (LMT)] (https://en.wikipedia.org/wiki/Local_mean_time) für die Region, die von der Zone abgedeckt wird. Sie können dies in den tz Quelldaten [hier] sehen (https://github.com/eggert/tz/blob/2017b/asia#L891). –

Verwandte Themen