如何创建不根据本地时间调整的 Unix 时间戳?
所以我有 UTC 时间的日期时间对象,我想将它们转换为 UTC 时间戳。问题是,time.mktime 对本地时间进行了调整。
所以这里是一些代码:
import os
import pytz
import time
import datetime
epoch = pytz.utc.localize(datetime.datetime(1970, 1, 1))
print time.mktime(epoch.timetuple())
os.environ['TZ'] = 'UTC+0'
time.tzset()
print time.mktime(epoch.timetuple())
这是一些输出:
Python 2.6.4 (r264:75706, Dec 25 2009, 08:52:16)
[GCC 4.2.1 (Apple Inc. build 5646) (dot 1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> import pytz
>>> import time
>>> import datetime
>>>
>>> epoch = pytz.utc.localize(datetime.datetime(1970, 1, 1))
>>> print time.mktime(epoch.timetuple())
25200.0
>>>
>>> os.environ['TZ'] = 'UTC+0'
>>> time.tzset()
>>> print time.mktime(epoch.timetuple())
0.0
显然,如果系统采用 UTC 时间,那么没有问题,但如果不是,那就是一个问题。设置环境变量并调用 time.tzset 可以工作,但这安全吗?我不想为整个系统调整它。
还有其他方法可以做到这一点吗?或者以这种方式调用 time.tzset 是否安全。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
calendar
模块包含calendar.timegm
解决了这个问题。
calendar.timegm
(tuple)The
calendar
module containscalendar.timegm
which solves this problem.calendar.timegm
(tuple)