在Python 3.2+中:datetime. zone.utc:
标准库使得将UTC指定为时区变得更加容易:
>>> import datetime
>>> datetime.datetime.now(datetime.timezone.utc)
datetime.datetime(2020, 11, 27, 14, 34, 34, 74823, tzinfo=datetime.timezone.utc)
你也可以使用astimezone获取一个包含本地时间偏移量的datetime:
>>> datetime.datetime.now(datetime.timezone.utc).astimezone()
datetime.datetime(2020, 11, 27, 15, 34, 34, 74823, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600), 'CET'))
(在Python 3.6+中,您可以将最后一行缩短为:datetime.datetime.now().astimezone()))
如果你想要一个只使用标准库并且在Python 2和Python 3中都能工作的解决方案,请参阅jfs的答案。
在Python 3.9+中:zoneinfo使用IANA时区数据库:
在Python 3.9中,你可以使用标准库使用zoneinfo指定特定的时区,如下所示:
>>> from zoneinfo import ZoneInfo
>>> datetime.datetime.now(ZoneInfo("America/Los_Angeles"))
datetime.datetime(2020, 11, 27, 6, 34, 34, 74823, tzinfo=zoneinfo.ZoneInfo(key='America/Los_Angeles'))
zoneinfo从操作系统获取时区数据库,或者从第一方PyPI包tzdata(如果可用的话)获取时区数据库。