pytz.timezone 显示亚洲/加尔各答的奇怪结果? [复制]

Posted

技术标签:

【中文标题】pytz.timezone 显示亚洲/加尔各答的奇怪结果? [复制]【英文标题】:pytz.timezone shows weird results for Asia/Calcutta? [duplicate] 【发布时间】:2012-07-11 15:12:21 【问题描述】:

可能重复:Python datetime object show wrong timezone offset

import pytz, datetime

 pytz.timezone("Asia/Calcutta")

打印以下内容:

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

为什么不是 05:30?我在时区 America/Los_Angeles。

【问题讨论】:

【参考方案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>)

【讨论】:

我相信更疯狂的偏移更接近现实:加尔各答经度:88.369 度。现在得到时间偏移: (88.369/180)x12=5.89 大约转换为 5 小时 53 分钟。当然,现实一定让每个人都过得很艰难,因此现在四舍五入。 这不是法律实际制定的时间偏移量。它只是该区域所覆盖区域的Local Mean Time (LMT) 的反映。你可以在 tz 源数据here 中看到这一点。

以上是关于pytz.timezone 显示亚洲/加尔各答的奇怪结果? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

pytz.timezone 显示亚洲/加尔各答的奇怪结果? [复制]

pytz tzname 的奇怪问题

`datetime.now(pytz timezone)` 啥时候失败?

汇合:Hdfs 沉入 avro 格式,但在 hive 中读取 avro 文件时,我的时间比“时区”提前 5:30 小时:“亚洲/加尔各答”

当 pytz.timezone() 传递给 tzinfo 时,pytz 返回 LMT 时区而不是 GMT

在 virtualenv 中第一次调用 pytz.timezone 很慢