关于python:NameError:未定义名称“UTC”

NameError: name 'UTC' is not defined

datetime.datetime.now()的输出在我的UTC-8的原生时区输出。 我想将其转换为适当的时间戳,其tzinfo为UTC。

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

^ outputs NameError:未定义名称"UTC"

x.replace(tzinfo=)输出SyntaxError:语法无效

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

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


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

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

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

对于其他时区,您仍然需要其他库,例如pytz


如果你正在寻找的是现在的UTC时间,那么datetime有一个内置的:

1
x = datetime.utcnow()

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

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

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

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