2012-07-11 11 views

cevap

18

Zaman dilimleri yıllar içinde değişir. http://www.prokerala.com/travel/timezones/Asia/Kolkata?mode=history'a göre, o bölge için orijinal ofset 5.88888888889 saat ya da 5 saat 53 dakika idi. pytz, bölgeyi gerçek bir tarihe atadığınızda uygun ofset ve nomenklatürü kullanacaktır.

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

Çılgın ofsetlerin gerçeğe çok daha yakın olduklarına inanıyorum: Kolkata boylamı: 88.369 derece. Şimdi zaman ofseti elde etmek için: (88.369/180) x12 = 5.89, yaklaşık 5 saat ve 53 dakikaya çevirir. Tabii ki, gerçeklik herkes için hayatı zorlaştırmış olmalı, dolayısıyla şimdi yuvarlanmış ofsetler. – tigeronk2

+0

Bu aslında yasa tarafından çıkarılan bir zaman ofseti değil. Bu, bölgenin kapsadığı bölge için [Yerel Ortalama Zaman (LMT)] 'nin bir yansımasıdır (https://en.wikipedia.org/wiki/Local_mean_time). Bunu tz kaynak verilerinde görebilirsiniz [here] (https://github.com/eggert/tz/blob/2017b/asia#L891). –