如何在Windows和IANA时区之间转换?

如何在Windows和IANA时区之间转换?,第1张

如何在Windows和IANA时区之间转换?

Windows和IANA时区标识符之间进行转换的数据的主要来源是

windowsZones.xml
作为Unipre
CLDR
项目的一部分分发的文件。

但是
,CLDR每年仅发布两次。这与Windows更新的定期节奏以及IANA时区数据库的不定期更新一起,使得直接使用CLDR数据变得很复杂。请记住,时区更改本身是由世界各国政府一时兴起的,并非所有更改都在引起足够注意的情况下进行以使其在各自的生效日期之前进入这些发布周期。

还有一些其他需要处理的极端情况,CLDR并未严格涵盖这些情况,并且不时d出新的情况。因此,我将解决方案的复杂性封装到TimeZoneConverter微库中,可以从Nuget安装该库。

使用这个库很简单。以下是一些转换示例

string tz = TZConvert.IanaToWindows("America/New_York");// Result:  "Eastern Standard Time"string tz = TZConvert.WindowsToIana("Eastern Standard Time");// result:  "America/New_York"string tz = TZConvert.WindowsToIana("Eastern Standard Time", "CA");// result:  "America/Toronto"

项目站点上还有更多示例。

重要的是要认识到,虽然IANA时区可以映射到单个Windows时区,但事实并非如此。一个Windows时区可能映射到多个IANA时区。在上面的示例中可以看到这一点,其中

EasternStandardTime
既映射到,也映射
America/New_York
America/Toronto
。TimeZoneConverter将提供带有CLDR标记的区域
"001"
,称为“黄金区”,除非您专门提供了国家(地区)代码,并且该国家/地区的其他区域存在匹配项。

注意:多年来,答案一直在发展,因此以下评论可能适用于当前修订版,也可能不适用于当前修订版。 查看编辑历史记录以了解详细信息。谢谢。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5476156.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存