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

如何在Python中获取反向链接时区的规范时区名称?

获取时区别名的规范名称

可以通过两种方式实现:

1. 直接读取tzdata的映射文件

tzdata包中自带一个backward文件,里面记录了所有时区别名与规范名称的对应关系。你可以通过代码定位并解析这个文件:

import zoneinfo
import os

def get_canonical_zone(alias):
    # 定位tzdata的存储路径
    tz_path = zoneinfo._tzpath[0]
    backward_file = os.path.join(tz_path, "backward")
    
    with open(backward_file, 'r') as f:
        for line in f:
            line = line.strip()
            # 跳过注释和空行
            if not line or line.startswith('#'):
                continue
            # 解析每行的别名-规范名映射
            parts = line.split()
            if parts[0] == alias:
                return parts[1]
    # 未找到对应映射时返回原别名
    return alias

# 测试示例
print(get_canonical_zone("Asia/Calcutta"))  # 输出 Asia/Kolkata

2. 借助ZoneInfo的内部属性(非官方实现,注意版本兼容)

ZoneInfo对象的_info属性包含时区元数据,其中canonical字段直接对应规范名称:

from zoneinfo import ZoneInfo

tz = ZoneInfo("Asia/Calcutta")
print(tz._info.canonical)  # 输出 Asia/Kolkata

注意:这种方法依赖ZoneInfo的内部实现逻辑,Python版本更新可能导致该属性变动,生产环境优先推荐第一种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:04:50