如何获得UTC中的日期时间和Python中的utcnow之间的区别



我有一个日期时间作为字符串(2016-12-31 23:59),我知道它是用UTC定义的。我现在想使用 Python 获取时间增量。我正在执行此操作的机器通常位于 CEST 时区 (Europe/Amsterdam ),但情况可能并非总是如此,因此我不想在代码中硬编码此时区。

对于本地时区,这将非常有用:

date_str = '2016-12-31 23:59'
print datetime.now() - datetime.strptime(date_str, '%Y-%m-%d %H:%M')

这显然是不正确的,但将其更改为使用 utcnow() 也是不正确的:

print datetime.utcnow() - datetime.strptime(date_str, '%Y-%m-%d %H:%M')

这不能正常工作,因为现在由 strptime 生成的日期时间位于运行此代码的计算机的时区中,而 utcnow() 采用 UTC。

我找到了这个答案,但这假设你知道运行代码的机器的时区,而我不知道。

有没有办法将 UTC 时区添加到我从datetime.strptime()获得的datetime对象中,以便我可以将其与utcnow()进行比较?欢迎所有提示

你的代码实际上很好。您的错误在于此假设:"由strptime生成的日期时间位于运行此代码的计算机的时区中。

datetime.strptime(date_str, '%Y-%m-%d %H:%M')将生成一个朴素的日期时间,表示您所说的 UTC 时间。

datetime.utcnow()将生成一个以 UTC 表示当前时间的朴素日期时间。

所以差异将是准确的。

相关内容

  • 没有找到相关文章

最新更新