为什么NodaTime不支持某些国家?

时间:2014-05-13 14:45:51

标签: c# nodatime

我在我的网站上使用“NodaTime.dll,v1.2.0.0”计算时区我使用此代码检索ZonedId:

 var tempInfo = (from location in TzdbDateTimeZoneSource.Default.ZoneLocations
                where  location.CountryCode.Equals(countryCode, 
                           StringComparison.OrdinalIgnoreCase)
                    select new { location.ZoneId, location.CountryName })
                .FirstOrDefault();

它工作正常但是当我想通过国家代码将它用于“阿森松岛”时:英国的“AC”或“UK”,它将返回null。

我想知道这个库不支持这个,或者我的方法错了吗?

1 个答案:

答案 0 :(得分:3)

这实际上只是CLDR和TZDB中的数据问题。 (碰巧,我正在更新到CLDR v25映射数据。)

英国使用其ISO-3166“GB”代码。 Ascension Island的ISO-3166代码是SH-AC,SH 存在,映射到“Atlantic / St_Helena”。 (我甚至不确定圣赫勒拿是否通常被视为一个国家;国家变得非常混乱。)