小编典典

转换为Unix时间时如何指定时区(UTC)?(python)

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(),则该小时提前六个小时。

有什么建议吗?

谢谢!


阅读 223

收藏
2021-01-20

共1个答案

小编典典

您可以使用struct_timeUTC创建一个UTC,datetime.utctimetuple()然后使用以下命令将其转换为unix时间戳calendar.timegm()

calendar.timegm(parseddate.utctimetuple())

这也可以解决任何夏令时偏移,因为可以utctimetuple()对此进行标准化。

2021-01-20