Python Zoneinfo 模块
zoneinfo 模块为 datetime 对象提供 IANA 时区支持。
该模块从 Python 3.9 开始加入标准库。
from datetime import datetime
from zoneinfo import ZoneInfo
当你需要使用真实世界的时区,例如 Asia/Shanghai、Europe/London 或 America/New_York 时,可以使用 zoneinfo。
创建带时区的 datetime
from datetime import datetime
from zoneinfo import ZoneInfo
meeting = datetime(2025, 5, 13, 9, 0, tzinfo=ZoneInfo('Asia/Shanghai'))
print(meeting.tzname())
print(meeting.utcoffset())
CST
8:00:00
tzinfo 会让 datetime 带上时区信息。面对不同国家的用户时,这比使用不带时区的 datetime 更安全。
在时区之间转换
from datetime import datetime
from zoneinfo import ZoneInfo
utc_time = datetime(2025, 5, 13, 1, 0, tzinfo=ZoneInfo('UTC'))
local_time = utc_time.astimezone(ZoneInfo('America/New_York'))
print(local_time.tzname())
print(local_time.hour)
EDT
21
日期之所以变化,是因为 2025 年 5 月 13 日 1:00 的 UTC 时间,在纽约仍然是 5 月 12 日的晚上。
查看时区键
key 属性保存了 IANA 时区名称。
from zoneinfo import ZoneInfo
zone = ZoneInfo('Asia/Shanghai')
print(zone.key)
Asia/Shanghai