我有一个字符串形式的日期时间 (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。
我找到了this SO answer ,但这假设您知道代码运行所在机器的时区,而我不知道。
有没有一种方法可以将 UTC 时区添加到从 datetime.strptime()
获取的 datetime
对象中,以便我可以将其与 进行比较>utcnow()
?欢迎提供所有建议
最佳答案
你的代码实际上没问题。您的错误在于以下假设:“由 strptime
产生的日期时间位于运行此代码的计算机的时区中。”
datetime.strptime(date_str, '%Y-%m-%d %H:%M')
将生成一个代表您所说的时间的naive日期时间是在 UTC 时间。
datetime.utcnow()
将生成一个代表 UTC 当前时间的naive日期时间。
因此差异将是准确的。
关于python - 如何在 Python 中获取 UTC 日期时间和 utcnow 日期时间之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46759888/