Python 3.9 的 zoneinfo 模块提供内置时区支持,基于 IANA 数据库,无需第三方库即可创建、转换时区并自动处理夏令时。1. 使用 ZoneInfo 绑定时区到 datetime,如 Asia/Shanghai、America/New_York;2. 通过 astimezone 转换时区;3. 支持常见区域/城市命名格式;4. 自动处理 DST 切换,可用 dst() 方法判断夏令时。推荐在 Python 3.9+ 中优先使用 zoneinfo。

Python 3.9 引入了 zoneinfo 模块,作为内置的时区支持方案,无需额外安装第三方库(如 pytz),就能处理国际时区。它基于 IANA 时区数据库,使用简单且与 datetime 配合良好。
1. 基本用法:获取时区并绑定时间
使用 ZoneInfo 类来指定时区,然后将其传入 datetime 的 tzinfo 参数。
创建带有时区的当前时间
beijing_time = datetime.now(ZoneInfo("Asia/Shanghai")) print(beijing_time)
创建某个具体时间并指定时区
ny_time = datetime(2023, 10, 1, 12, 0, 0, tzinfo=ZoneInfo("America/New_York")) print(ny_time)
2. 时区转换:将时间从一个时区转到另一个
只要原始时间包含时区信息,就可以通过 astimezone() 转换为目标时区。
3. 常见时区名称示例
IANA 使用“区域/城市”格式命名时区。常见包括:
立即学习“Python免费学习笔记(深入)”;
dmSOBC SHOP网店系统由北京时代胜腾信息技术有限公司(http://www.webzhan.com)历时6个月开发完成,本着简单实用的理念,商城在功能上摒弃了外在装饰的一些辅助功能,尽可能的精简各项模块开发,做到有用的才开发,网店V1.0.0版本开发完成后得到了很多用户的使用并获得了好评,公司立即对网店进行升级,其中包括修正客户提出的一些意见和建议,现对广大用户提供免费试用版本,如您在使用
-
Asia/Shanghai- 中国标准时间(CST) -
Asia/Tokyo- 日本时间 -
Europe/London- 英国伦敦(自动处理夏令时) -
America/New_York- 美国东部时间(含夏令时) -
UTC- 标准世界时间
4. 处理夏令时(DST)
zoneinfo 自动处理夏令时切换。例如,在美国纽约,3月第二个周日会进入夏令时。
# 演示夏令时前后的时间差异 dt1 = datetime(2023, 3, 12, 1, 30, tzinfo=ZoneInfo("America/New_York")) # 冬令时期间 dt2 = datetime(2023, 3, 12, 3, 30, tzinfo=ZoneInfo("America/New_York")) # 夏令时跳过2点print(dt1) # 正常输出 print(dt2) # 仍合法,系统可识别为 DST 后的时间
如果需要判断是否为夏令时,可用 dst() 方法:
基本上就这些。zoneinfo 让 Python 原生支持丰富、准确的时区操作,推荐在 Python 3.9+ 项目中优先使用它代替 pytz。注意确保系统或 Python 安装附带了时区数据(通常默认包含)。










