我在我的网站上使用“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。
我想知道这个库不支持这个,或者我的方法错了吗?
答案 0 :(得分:3)
这实际上只是CLDR和TZDB中的数据问题。 (碰巧,我正在更新到CLDR v25映射数据。)
英国使用其ISO-3166“GB”代码。 Ascension Island的ISO-3166代码是SH-AC,SH 存在,映射到“Atlantic / St_Helena”。 (我甚至不确定圣赫勒拿是否通常被视为一个国家;国家变得非常混乱。)