NameError:未定义名称“UTC”

时间:2012-07-05 22:57:27

标签: python datetime

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

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

^输出NameError:未定义名称“UTC”

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

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

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

2 个答案:

答案 0 :(得分:9)

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

修改:自Python 3.2起,datetime模块包含timezone个对象,其中包含utc成员。获取当前UTC时间的规范方法现在是:

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

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

答案 1 :(得分: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?