如何获取当前时间(现在)在UTC中?
我有一个Python的日期时间对象,它表示的是五分钟后的时间。我想把这个时间转换成UTC格式。接下来,我打算把它输出成RFC 2822格式,以便放在HTTP头里,但我不确定这对这个问题是否重要。我在这个网站上找到了一些关于转换时间对象的信息,看起来那样更简单,但这次我真的想使用日期时间对象,因为我在用时间差来调整它们:
我尝试了类似这样的代码:
from datetime import datetime, timedelta
now = datetime.now()
fiveMinutesLater = datetime.now() + timedelta(minutes=5)
fiveMinutesLaterUtc = ???
在时间或日期时间模块里,没有什么看起来能帮到我的。似乎我可以通过3到4个函数来处理这个日期时间对象,但我在想是否有更简单的方法。
我更希望不使用第三方模块,但如果这是唯一合理的选择,我也可以考虑。
9 个回答
6
如果你来到这里是想找一种方法,把日期时间对象转换成自UNIX纪元以来的UTC秒数:
import time
import datetime
t = datetime.datetime.now()
utc_seconds = time.mktime(t.timetuple())
11
首先,你需要确保你的日期时间对象是一个带时区的对象,这可以通过设置它的 tzinfo
属性来实现:
http://docs.python.org/library/datetime.html#datetime.tzinfo
然后,你可以使用 .astimezone()
函数来进行转换:
http://docs.python.org/library/datetime.html#datetime.datetime.astimezone
70
运行这个代码可以得到一个简单的UTC时间(并且会在这个时间上加上五分钟):
>>> from datetime import datetime, timedelta
>>> datetime.utcnow()
datetime.datetime(2021, 1, 26, 15, 41, 52, 441598)
>>> datetime.utcnow() + timedelta(minutes=5)
datetime.datetime(2021, 1, 26, 15, 46, 52, 441598)
如果你想要一个带有时区信息的日期时间对象,可以在Python 3.2或更高版本中运行这个代码:
>>> from datetime import datetime, timezone
>>> datetime.now(timezone.utc)
datetime.datetime(2021, 1, 26, 15, 43, 54, 379421, tzinfo=datetime.timezone.utc)