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

寻求IANA时区与ISO国家/地区代码映射资源及C#包

关于IANA时区到ISO国家代码+地区代码的映射资源及C#方案

一、直接可用的映射资源

  • IANA时区数据库的zone.tab文件:该文件包含时区条目对应的ISO 3166-1 alpha-2国家代码,同时多数时区名称本身就附带地区标识(如Asia/Shanghai中的Shanghai),可直接提取作为地区ID使用。部分条目还会在注释里补充地理细分信息,能辅助完善映射。
  • 社区扩展数据集:有第三方项目基于IANA数据扩展,补充了与ISO 3166-2(地区代码)的关联映射,这类结构化数据集(JSON/CSV格式)可直接复用,省去自行构建映射的成本。

二、C#工具包方案

  • NodaTime:这是C#中处理时区的主流库,内置完整的IANA时区数据。通过TzdbDateTimeZoneSource的ZoneLocations属性,可获取时区对应的国家代码及地理信息,还能从时区ID中提取地区标识。示例代码:
using NodaTime;
using NodaTime.TimeZones;

var tzSource = TzdbDateTimeZoneSource.Default;
foreach (var location in tzSource.ZoneLocations)
{
    var timeZone = tzSource.ForId(location.ZoneId);
    string isoCountryCode = location.CountryCode;
    string regionId = location.ZoneId.Split('/').Last(); // 提取时区中的地区部分
    // 后续可结合ISO 3166-2数据关联更规范的地区代码
}
  • TimeZoneConverter扩展使用:原生TimeZoneConverter仅提供国家代码,但你可以基于它获取的IANA时区ID,通过拆分字符串(如Europe/Paris拆出Paris)得到地区标识,再配合ISO 3166-2数据集完成完整映射。

三、关键注意点

  • 由于IANA时区刻意避开政治边界,存在一个地区对应多时区(如美国本土多个时区)或一个时区覆盖多地区(如Africa/Abidjan覆盖西非多个国家)的情况,需根据业务需求确定映射规则:要么取时区覆盖的核心地区,要么保留多对多的映射关系。
  • 部分IANA时区无法直接匹配到唯一的ISO 3166-2地区代码,此时可优先用时区名称中的城市/地区名作为替代,或结合地理坐标匹配最接近的地区编码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 02:36:01