我试图了解如何将IANA时区映射到Windows时区.

由于Windows到IANA时区是一对多的,如果我们从IANA转换到Windows,实际偏移量和DST标志是否有可能是错误的.例如,是否存在这样一种情况:Windows时区覆盖2小时的时间,而IANA(两个时区中的)每个小时都有两个不同的时区.这样,如果我们将IANA转换为第二个小时的Windows时区,实际偏移量将不同/变化.

对于我们来说,能够从IANA绘制 map 就不那么重要了->Windows,然后返回IANA以获得相同的时区名称.非常重要的是,当我们重新映射时,实际偏移量和DST标志不会改变.

非常感谢.

推荐答案

非常重要的是,当我们重新映射时,实际偏移量和DST标志不会改变.

这实际上要求Windows数据库和IANA数据库始终完全同步.虽然我能理解这种渴望,但这是一种不切实际的期望.除此之外,随着政府对规则的修改,这两个数据库都会随着时间的推移而变化.除非您确保同时更改两个版本(在您使用的所有机器上!)始终存在差异的可能性.除了稳定状态下的实际数据不同之外——这种情况也会发生.

如果你查看Windows和IANA区域名称之间的ICU映射(例如this copy in the Noda Time repo),你会发现它不是1:1映射.一个Windows时区ID可以映射到多个不同的IANA ID,其中一个(territory 001)被视为主要映射.

我预计,在绝大多数情况下,你会看到两者之间的结果是相同的——但肯定不能保证在每个时区的每一刻都是如此.

.net相关问答推荐

EF Core IEntityTypeConfigurations:从数据库提取数据后相关对象为空

在 F# 中处理 Option - Some(null) 的好策略是什么

避免函数和其他对象之间的相互递归的模式?

如何在 NET 5 / 6 中使用 Direct3D11CaptureFramePool

System.IO.Directory.Exists 在 LINQ 语句中失败,但在 foreach 循环中没有

在接口内部声明 IEnumerable 而在具体类中声明 IList

从 byte[] 创建 zip 文件

有什么方法可以使用 .NET 应用程序使用 git 吗?

DBNull 的意义何在?

您可以在 C# 代码中捕获本机异常吗?

SQLParameter 如何防止 SQL 注入?

在 .NET 中计算目录大小的最佳方法是什么?

为什么会出现编译错误使用未分配的局部变量?

强制 XmlSerializer 将 DateTime 序列化为 'YYYY-MM-DD hh:mm:ss'

错误 NU1605 检测到包降级

如何将整个字符串与正则表达式匹配?

C# List<> 按 x 然后 y 排序

合并两个(或更多)PDF

使用 C# vs F# 或 F# vs C# 有什么好处?

嵌套捕获组如何在正则表达式中编号?