【问题标题】:Timestamp to UTC ISO 8601 dateUTC ISO 8601 日期的时间戳
【发布时间】:2017-12-12 20:20:05
【问题描述】:

这个

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 这样的其他第三方库。

【问题讨论】:

    标签: python date datetime utc iso8601


    【解决方案1】:

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

    返回 POSIX 时间戳对应的 UTC 日期时间,使用 tzinfo None。

    fromtimestamp() 中没有指定 tzinfo:

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

    这似乎不是你想要的。

    【讨论】:

    • 这是正确答案,更多信息here
    【解决方案2】:

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

    来自 python 文档:

    类方法 datetime.utcfromtimestamp(timestamp)¶ 返回与 POSIX 时间戳相对应的 UTC 日期时间, 带有 tzinfo 无。如果时间戳已过期,这可能会引发 ValueError 平台 C gmtime() 函数支持的值范围。 这通常被限制在 1970 年到 2038 年的年份。

    【讨论】:

      猜你喜欢
      • 2013-01-30
      • 2010-10-23
      • 2023-04-11
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      相关资源
      最近更新 更多