gpt4 book ai didi

python - 为什么 gmtime 和 utcnow 日期时间之间有 1 小时的差异?

转载 作者:太空宇宙 更新时间:2023-11-04 09:01:23 25 4
gpt4 key购买 nike

如果我这样做:

>>> print datetime.fromtimestamp(time.mktime(time.gmtime())) - datetime.utcnow()

它打印:

0:59:59.618000

为什么 utcnow() 会比我的本地时间偏移 4 小时,而 gmtime() 会偏移 5 小时?

这会打印 -5 和:

print int(-time.timezone/60/60)

这不应该是 UTC 时间吗?

最佳答案

在 Python 中,time.gmtime()datetime.utcnow() 之间没有 1 小时的差异。它们都代表 UTC 时区的相同时间。 time.gmtime() 不代表 Europe/London 时区的时间。 UTC 时区没有 DST 转换。 UTC 时区中的 utc 偏移量始终为零。

您的代码有误。将 time.mktime()time.gmtime() 一起用作输入是不正确的,除非您的本地时区是 UTC。如 time.timezone != 0 所示,您的本地时区不是 utc。

Isn't all this supposed to be UTC time?

  • time.gmtime() 以时间元组形式返回 UTC 时间
  • datetime.utcnow() 将 UTC 时间作为原始 datetime 对象返回
  • time.mktime() 接受本地时间并返回“自纪元以来的秒数”
  • datetime.fromtimestamp() 接受“纪元以来的秒数”并将本地时间作为原始日期时间对象返回

比较 time.gmtime()datetime.utcnow():

#!/usr/bin/env python
import time
from datetime import datetime

print(abs(datetime(*time.gmtime()[:6]) - datetime.utcnow()))
# -> 0:00:00.524724

差异不为零,因为时间元组不存储微秒,否则无论您本地的时区如何,两个函数都会返回相同的时间。

如果您的目的是查找本地时区的 utc 偏移量,请参阅 Getting computer's utc offset in Python .

关于python - 为什么 gmtime 和 utcnow 日期时间之间有 1 小时的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25022745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com