如何获取当前时间(现在)在UTC中?

64 投票
9 回答
109339 浏览
提问于 2025-04-16 01:48

我有一个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)

撰写回答