UTC ISO 8601日期的时间戳

时间:2017-12-12 20:20:05

标签: python date datetime utc iso8601

import datetime
datetime.datetime.fromtimestamp(1501545600).isoformat()

应输出2017-08-01T00:00:00Z2017-08-01T00:00:00但我得

2017-08-01T02:00:00

相反,可能是因为当地时区。

如何让.isoformat()输入UTC时间,即2017-08-01T00:00:00

如果可能,我只想使用datetime,而不使用其他第三方库,例如arrowdateutils

2 个答案:

答案 0 :(得分:2)

使用utcfromtimestamp()而不是fromtimestamp()。来自docs

  

返回与POSIX时间戳对应的UTC日期时间,tzinfo为无。

fromtimestamp()中未指定tzinfo:

  

如果可选参数tz为None或未指定,则时间戳将转换为平台的本地日期和时间,并且返回的datetime对象是天真的。

这似乎不是你想要的。

答案 1 :(得分:1)

那不应该是datetime.utcfromtimestamp()吗?

来自python docs:

  

类方法datetime.utcfromtimestamp(时间戳)¶   返回与POSIX时间戳对应的UTC日期时间,   与tzinfo无。如果时间戳结束,这可能会引发ValueError   平台C gmtime()函数支持的值范围。   这种情况常见于1970年至2038年。