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

使用TimeZoneNames查询Europe/Jersey等时区en-US下为何总返回GMT?

时区查询异常:泽西岛、马恩岛时区始终返回GMT缩写

我需要获取不同时段各国的具体时区缩写,目前使用TimeZoneNames库实现相关需求,但遇到了异常问题:当查询泽西岛(Europe/Jersey)和马恩岛(Europe/Isle_of_Man)的时区缩写时,无论当前处于什么时段,使用语言代码"en-US"查询返回的结果始终是"GMT",代码实现如下:

GetTimeZoneAbbreviation(ZonedDateTime localTimeZone)
{
   string lang = CultureInfo.GetCultureInfo("en-US").Name;
   string tzid = localTimeZone.Zone.Id;
   var isDST = localTimeZone.IsDaylightSavingTime();
   TimeZoneValues localTimeZoneName = TZNames.GetAbbreviationsForTimeZone(tzid, lang);
   return isDST ? localTimeZoneName.Daylight : localTimeZoneName.Standard;
}

调试时我发现返回的localTimeZoneName所有字段值都是"GMT",正常情况下夏令时对应的字段应该返回"BST"才对。我测试了多个其他国家的时区,只有这两个时区没有区分夏令时/冬令时的缩写。

已排查信息

  • 查看该库的data.json数据源,Europe/Jersey和Europe/Isle_of_Man的引用数量远少于其他时区,其中一个值直接关联GMT,而其他时区一般会指向"Europe_Central"这类元时区标识,或者有更多关联指向。
  • 另外,core/common/supplemental下的metaZones.xml文件里,泽西岛和马恩岛的时区仅关联了GMT元时区,而都柏林等其他时区有如下配置:
<timezone type="Europe/Dublin">
            <usesMetazone mzone="Irish" to="1971-10-31 02:00"/>
            <usesMetazone mzone="GMT" from="1971-10-31 02:00"/>
</timezone>
...
<mapZone other="GMT" territory="IE" type="Europe/Dublin"/>
...
<mapZone other="Irish" territory="001" type="Europe/Dublin"/>

而泽西岛和马恩岛仅配置了基础的timezone节点。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:48:01