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

TimezoneFinder获取的America/Ciudad_Juarez时区在pytz中报错

pytz无法识别timezonefinder返回的America/Ciudad_Juarez时区

问题重现

调用TimezoneFinder获取墨西哥华雷斯城机场的时区时,返回America/Ciudad_Juarez,但用pytz加载该时区会触发错误:

from timezonefinder import TimezoneFinder
from pytz import timezone

tz = TimezoneFinder().timezone_at(lng=-106.48333, lat=31.73333)
# 返回 'America/Ciudad_Juarez'
timezone(tz)

错误信息:

UnknownTimeZoneError: 'America/Ciudad_Juarez'

原因解析

America/Ciudad_Juarez确实是IANA时区数据库中的标准条目,但pytz项目已停止维护,其内置的时区数据库版本较旧,没有收录这个较新添加的时区。

优雅解决方法

方法1:改用Python内置的zoneinfo(推荐)

Python 3.9及以上版本内置了zoneinfo模块,它直接使用系统或环境中最新的IANA时区数据库,能识别所有新增时区:

from timezonefinder import TimezoneFinder
from zoneinfo import ZoneInfo

tz_name = TimezoneFinder().timezone_at(lng=-106.48333, lat=31.73333)
tz = ZoneInfo(tz_name)  # 正常加载America/Ciudad_Juarez

方法2:为pytz添加时区映射(兼容旧代码)

如果必须继续使用pytz,可以手动建立映射表——America/Ciudad_Juarez和America/Denver的时区规则完全一致,可直接替换:

from timezonefinder import TimezoneFinder
import pytz

# 新增时区与pytz兼容时区的映射表
COMPAT_TZ_MAP = {
    'America/Ciudad_Juarez': 'America/Denver'
}

tz_name = TimezoneFinder().timezone_at(lng=-106.48333, lat=31.73333)
# 自动替换为pytz支持的时区
tz_name = COMPAT_TZ_MAP.get(tz_name, tz_name)
tz = pytz.timezone(tz_name)

内容的提问来源于stack exchange,提问作者the world is not flat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:55:13