首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不进行转换的C#中获取IANA时区

如何在不进行转换的C#中获取IANA时区
EN

Stack Overflow用户
提问于 2022-06-21 23:57:40
回答 1查看 188关注 0票数 0

当您在windows机器上运行.net时,它从Windows注册表中提取时区信息,从而使用而不是IANA。您可以在它们之间进行转换,但请考虑以下代码:

代码语言:javascript
复制
TimeZoneInfo.TryConvertIanaIdToWindowsId("Canada/Eastern", out string temp2);
TimeZoneInfo.TryConvertWindowsIdToIanaId(temp2, out string temp3);
Debug.WriteLine(temp2 ?? "NULL"); //Eastern Standard Time
Debug.WriteLine(temp3 ?? "NULL"); //America/New_York

从Windows时区到IANA时区的转换不是双向的。似乎有一个典型的时区,windows的集群时区被更改为(在本例中是纽约)。

这在非windows机器上不是问题,因为它们都使用IANA,但是,对于windows,我无法获得用户的真正IANA时区。不管怎么说,这附近有吗?

如果windows将时区(如“美国/纽约”和“加拿大/东部”组合成“东部标准时间”)最终(或者已经)有了不同的历史夏时制规则,那么windows如何才能幸免呢?这就是说,即使他们都是一样的,除了名字,我想得到适当的IANA时区的机器以某种方式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-22 14:44:36

方法TimeZoneInfo.TryConvertWindowsIdToIanaId有一个重载,您可以在其中指定区域:

代码语言:javascript
复制
TimeZoneInfo.TryConvertWindowsIdToIanaId(string windowsId, string? region, out string ianaId);

使用“区域”参数,可以将国家/区域指定为ISO 3166码

您可以使用RegionInfo.CurrentRegion.TwoLetterISORegionName获取国家/地区代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72708252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档