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

2024-04-24 23:46:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python datetime对象(表示从现在起五分钟),我想将其转换为UTC。我计划以RFC2822格式输出它以放入HTTP头中,但我不确定这对这个问题是否重要。我在这个网站上找到了一些关于转换时间对象的信息,这样看起来更简单,但这次我真的想使用datetime对象,因为我使用TimeDelta来调整它们:

我试过这样的方法:

from datetime import datetime, timedelta

now = datetime.now()
fiveMinutesLater = datetime.now() + timedelta(minutes=5)
fiveMinutesLaterUtc = ???

时间或日期时间模块中的任何内容看起来都不会对我有所帮助。似乎我可以通过3或4个函数传递datetime对象来实现,但我想知道是否有更简单的方法

我不希望使用第三方模块,但如果这是唯一合理的选择,我可能会这样做


Tags: 模块对象方法信息httpdatetime网站格式
3条回答

首先,您需要通过设置datetime的tzinfo成员来确保它是一个时区感知对象:

http://docs.python.org/library/datetime.html#datetime.tzinfo

然后可以使用.astimezone()函数将其转换为:

http://docs.python.org/library/datetime.html#datetime.datetime.astimezone

对于那些在这里寻找将datetime对象转换为UTC秒(自UNIX纪元以来)的方法的人:

import time
import datetime

t = datetime.datetime.now()
utc_seconds = time.mktime(t.timetuple())

运行此命令以获得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)

如果您更喜欢时区感知的datetime对象,请在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)

相关问题 更多 >