程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在Windows和IANA时区之间转换?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

开发过程中遇到如何在Windows和IANA时区之间转换?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在Windows和IANA时区之间转换?的解决方法建议,希望对你解决如何在Windows和IANA时区之间转换?有所启发或帮助;

windows和IANA时区标识符之间进行转换的数据的主要来源是windowsZones.xml作为Unicode CLDR项目的一部分分发的文件。

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

还有一些其他需要处理的极端情况,CLDR并未严格涵盖这些情况,并且不时弹出新的情况。因此,我将解决方案的复杂性封装到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时区。在上面的示例中可以看到这一点,其中Eastern Standard Time既映射到,也映射America/New_YorkAmerica/Toronto。TimeZoneConverter将提供带有CLDR标记的区域"001",称为“黄金区”,除非您专门提供了国家(地区)代码,并且该国家/地区的其他区域存在匹配项。

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

解决方法

如时区标签wiki中所述,时区有两种不同的样式。

  • @H_561_2@microsoft提供的与Windows和.Net TimeZoneInfo类一起使用的(在Windows上运行时)由诸如的值标识"Eastern Standard Time"

  • IANDB在TZDB中提供的那些,TimeZoneInfo在Linux或OSX上运行时由.NET 类使用,由诸如的值标识"America/New_York"

许多基于Internet的API使用IANA时区,但由于多种原因,可能需要将其转换为Windows时区ID,反之亦然。

如何在.Net中完成?

大佬总结

以上是大佬教程为你收集整理的如何在Windows和IANA时区之间转换?全部内容,希望文章能够帮你解决如何在Windows和IANA时区之间转换?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。