我有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(),则该小时提前六个小时。
有什么建议吗?
谢谢!
您可以使用struct_timeUTC创建一个UTC,datetime.utctimetuple()然后使用以下命令将其转换为unix时间戳calendar.timegm():
struct_time
datetime.utctimetuple()
calendar.timegm()
calendar.timegm(parseddate.utctimetuple())
这也可以解决任何夏令时偏移,因为可以utctimetuple()对此进行标准化。
utctimetuple()