pytz.timezone показывает странные результаты для Азии/Калькутты?

Возможный дубликат:
объект даты и времени Python отображается неправильно смещение часового пояса

import pytz, datetime

 pytz.timezone("Asia/Calcutta")

печатает следующее:

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

Почему сейчас не 05:30? Я нахожусь в часовом поясе America/Los_Angeles.


person Rajat    schedule 11.07.2012    source источник


Ответы (1)


Часовые пояса меняются с годами. Согласно 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>)
person Mark Ransom    schedule 11.07.2012
comment
Я считаю, что более безумные смещения были намного ближе к реальности: долгота Калькутты: 88,369 град. Теперь, чтобы получить смещение времени: (88,369/180)x12=5,89, что примерно соответствует 5 часам 53 минутам. Конечно, реальность, должно быть, усложнила жизнь всем, поэтому сейчас округлены смещения. - person tigeronk2; 28.02.2013
comment
Это не смещение по времени, которое фактически было принято законом. Это просто отражение среднего местного времени (LMT) для региона, охватываемого зоной. Вы можете увидеть это в исходных данных tz здесь. - person Matt Johnson-Pint; 07.06.2017