【发布时间】:2014-10-04 11:02:43
【问题描述】:
我在 python 中遇到了时区问题,并且有一个奇怪的例子...... 我正在使用 Python 2.7.2
import time
import datetime
import pytz
utc = pytz.utc
est = pytz.timezone('US/Eastern')
mst = pytz.timezone('US/Mountain')
print 'UTC time',time.mktime(datetime.datetime(1970, 01, 01, 0, 0, 0, tzinfo=utc).timetuple())/3600
print 'EST time',time.mktime(datetime.datetime(1970, 01, 01, 0, 0, 0, tzinfo=est).timetuple())/3600
print 'MST time',time.mktime(datetime.datetime(1970, 01, 01, 0, 0, 0, tzinfo=mst).timetuple())/3600
我认为对于三个示例(UTC、EST、MST)我应该得到 0.0、5.0 和 7.0 - 但是对于所有三种情况我都得到 5.0(我的计算机在 EST 中运行)。
另外
time.mktime(time.gmtime(0))
返回 18000.0(5 小时) - 所以 - 明确请求 gmtime 获取元组,然后转换为 epoch 返回 5 小时。我的 python 发行版有 time.time() 和 time.gmtime(),但没有 time.timegm()
那么,如果我从 MST 中的客户那里收到数据 - 并且想要以 UTC 生成一个纪元 - 我是否必须假装时间戳是 EST 然后加上五个小时?
这是 strptime 丢弃时区信息的结果吗?
【问题讨论】:
标签: python python-2.7 datetime timezone python-datetime