You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将常规时区名称转换为tz数据库时区名

时区名称转换方案

形如Eastern European Standard Time的字符串是Windows平台定义的时区标识,要转换为IANA tz数据库格式(即Europe/Kaliningrad这类标准命名),不要手动硬编码映射表——时区规则会随政策动态调整,手动维护的映射表极易过时,直接使用长期维护的成熟第三方库是最优选择。

具体实现

  • 首先安装依赖库tzlocal,该库同步官方最新的时区映射规则,跨平台兼容Windows、Linux、macOS,不需要依赖系统底层注册表即可完成转换:
pip install tzlocal
  • 直接调用库内置的转换函数即可完成映射,不需要额外编写解析逻辑:
from tzlocal.windows_tz import win_tz_to_iana

# 传入Windows格式的时区名称
win_tz_str = "Eastern European Standard Time"
# 直接得到tz数据库格式的时区名
iana_tz_str = win_tz_to_iana(win_tz_str)

print(iana_tz_str)
# 输出结果:Europe/Kaliningrad

补充说明

少数Windows时区名称会对应多个IANA tz时区,上述函数默认返回官方推荐的首选映射值,符合通用使用场景。转换得到的IANA时区名可以直接传给Python 3.9+标准库zoneinfo.ZoneInfo,生成可直接给datetime使用的时区对象:

from datetime import datetime
from zoneinfo import ZoneInfo

tz_obj = ZoneInfo(iana_tz_str)
# 生成带该时区的当前时间
local_now = datetime.now(tz=tz_obj)

内容的提问来源于stack exchange,提问作者jvh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:48:41