【问题标题】:pytz.timezone shows weird results for Asia/Calcutta? [duplicate]pytz.timezone 显示亚洲/加尔各答的奇怪结果? [复制]
【发布时间】: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。

【问题讨论】:

    标签: python datetime pytz


    【解决方案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 中看到这一点。
    猜你喜欢
    • 2021-01-24
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    相关资源
    最近更新 更多