使用 pytz 时,我将“ZZ”作为国家/地区代码
Posted
技术标签:
【中文标题】使用 pytz 时,我将“ZZ”作为国家/地区代码【英文标题】:I am getting 'ZZ' as country code when using pytz 【发布时间】:2014-01-25 06:33:24 【问题描述】:我正在使用 App 引擎,并且正在尝试从请求中获取时区。 但是,当在本地主机上时,它似乎总是返回“ZZ”作为国家代码,这不是 pytz 库中的国家/地区。
这段代码:
country = self.request.headers['X-Appengine-Country']
logging.info(country)
tz = pytz.country_timezones(country)
产生这个错误:
返回 self.data[key.upper()] 键错误:'ZZ'
非常感谢您的帮助
【问题讨论】:
【参考方案1】:“ZZ”常用于表示“未知或未指定的国家”
还有一个数字版的二字母代码,计算为1070+30a+b,其中a和b是A=1,B=2等转换后的代码的两个字母,所以AA=1101 , AB=1102, BA=1131, ZZ=1876。
【讨论】:
谢谢,您知道您是否有可能将 ZZ 投入生产? 当你这样做时,我至少会准备好抓住这些案例。我使用过 AdMob 等其他服务,其中“ZZ”案例的数量远远高于我的预期。 我在生产中得到“ZZ”和“unknown”。 "ZZ" 在 Unicode 的 cldr-data 中被引入,作为国家代码出现在别处时的“通配符”。例如,如果您想在可能的子标签中使用默认语言环境 cldr.unicode.org,您会发现像“abt-Latn-ZZ”这样的值,其中 ZZ 表示该语言的所有国家 + scriptDesignator ...【参考方案2】:我建议您对请求标头名称使用正确的大小写。例如X-AppEngine-Country
但是,在本地开发环境中 - 我认为不支持 Location 功能,即您不会获得正确的值。这些应该只适用于部署环境。位置很可能由 Google 网络内部的 Google 服务提供,并且未在本地开发环境中公开。
尝试将您的代码部署到实时环境并检查值。
【讨论】:
“字段名不区分大小写。”以上是关于使用 pytz 时,我将“ZZ”作为国家/地区代码的主要内容,如果未能解决你的问题,请参考以下文章
python Python国家代码,名称,大洲,首都和pytz时区列表