转换为Unix时间时如何指定时区(UTC)? (Python)
我有 IS8601 格式的 utc 时间戳,正在尝试将其转换为 unix 时间。 这是我的控制台会话:
In [9]: mydate
Out[9]: '2009-07-17T01:21:00.000Z'
In [10]: parseddate = iso8601.parse_date(mydate)
In [14]: ti = time.mktime(parseddate.timetuple())
In [25]: datetime.datetime.utcfromtimestamp(ti)
Out[25]: datetime.datetime(2009, 7, 17, 7, 21)
In [26]: datetime.datetime.fromtimestamp(ti)
Out[26]: datetime.datetime(2009, 7, 17, 2, 21)
In [27]: ti
Out[27]: 1247815260.0
In [28]: parseddate
Out[28]: datetime.datetime(2009, 7, 17, 1, 21, tzinfo=<iso8601.iso8601.Utc object at 0x01D74C70>)
如您所见,我无法获取正确的时间。 如果我使用 fromtimestamp() 则一小时提前一小时,如果我使用 utcfromtimestamp() 则提前六小时
有什么建议吗?
谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用
struct_time
>datetime.utctimetuple() ,然后使用calendar.timegm()
:这也会处理任何夏令时偏移,因为
utctimetuple()
对此进行了标准化。You can create an
struct_time
in UTC withdatetime.utctimetuple()
and then convert this to a unix timestamp withcalendar.timegm()
:This also takes care of any daylight savings time offset, because
utctimetuple()
normalizes this.我只是猜测,但一小时的差异可能不是因为时区,而是因为夏令时的开启/关闭。
I am just guessing, but one hour difference can be not because of time zones, but because of daylight savings on/off.
请参阅类似问题的另一个答案了解更多详细信息。
然后回来:
See more details in another answer to similar question.
And back: