7

datetime.datetime.now()在我的本地 UTC-8 时区输出的输出。我想将其转换为带有 UTC tzinfo 的适当时间戳。

from datetime import datetime, tzinfo
x = datetime.now()
x = x.replace(tzinfo=UTC)

^ 输出 NameError: 名称 'UTC' 未定义

x.replace(tzinfo=<UTC>)输出 SyntaxError: 无效的语法

x.replace(tzinfo='UTC')输出类型错误:tzinfo 参数必须是 None 或 tzinfo 子类,而不是类型“str”

用于完成我的示例的正确语法是什么?

4

2 回答 2

10

您需要使用额外的库,例如pytz. Python 的datetime模块不包括任何tzinfo类,包括 UTC,当然也不包括您的本地时区。

编辑:从Python 3.2开始,该datetime模块包含一个timezone带有utc成员的对象。现在获取当前 UTC 时间的规范方法是:

from datetime import datetime, timezone
x = datetime.now(timezone.utc)

您仍然需要另一个库,例如pytz其他时区。

于 2012-07-05T23:02:25.653 回答
3

如果您要查找的只是 UTC 现在的时间,则 datetime 有一个内置函数:

x = datetime.utcnow()

不幸的是,它不包含任何 tzinfo,但它确实为您提供了 UTC 时间。

或者,如果您确实需要 tzinfo,您可以这样做:

from datetime import datetime
import pytz
x = datetime.now(tz=pytz.timezone('UTC'))

您可能还对时区列表感兴趣:Python - Pytz - List of Timezones?

于 2014-05-29T08:17:38.377 回答