pytz.timezone对于Asia/Calcutta显示奇怪的结果?

22

可能重复:
Python datetime对象显示错误的时区偏移

import pytz, datetime

 pytz.timezone("Asia/Calcutta")

打印以下内容:

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

为什么现在不是05:30?我所处的时区是美国洛杉矶。

1个回答

33

时区会随着年份不断变化。根据 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)x 12 = 5.89,大约相当于5小时53分钟。当然,现实肯定让每个人的生活变得更加困难,因此现在采用圆整的偏差值。 - tigeronk2
2
这不是法律实施的时间偏移量。它只是区域所涵盖的本地平均时间 (LMT) 的反映。您可以在 tz 源数据中查看这一点。链接在此处。 - Matt Johnson-Pint

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接