.net - IANA 到 Windows 时区的映射

标签 .net timezone

我试图了解如何将 IANA 时区映射到 Windows 时区。 我确实在这里看到了有关 TimeZoneConverter 的各种帖子,然后我开始使用它。但是,有一个问题我没有找到答案:

由于窗口到 IANA 时区是一对多,如果我们从 IANA 转换到 Windows,实际偏移量和 DST 标志是否有可能是错误的。例如,是否存在这样的情况:Windows 时区涵盖 2 小时的时间,而 IANA 对于这些小时(两个小时)中的每一个小时都有两个不同的时区。这样,如果我们获取第二个小时的 IANA 并将其转换为 Windows 时区,则实际偏移量将会有所不同/更改。

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

谢谢

最佳答案

It is very important that when we do the re-mapping, the actual offsets and DST flags do not change.

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

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

我希望在绝大多数情况下,您会看到两者之间相同的结果 - 但绝对不能保证每个时区的每个瞬间都如此。

关于.net - IANA 到 Windows 时区的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71873777/

相关文章:

PHP 时区转换器

javascript - 如何按天、周、月对具有时间戳属性的对象进行分组?

ruby-on-rails-3 - Rails 3.1 中带有时区的选择框

c# - 存储常用数据库表 ID 的最佳方法?

c# - 将文件附加到 Outlook

c# - DateTime.ToString() 不转换时间

c# - .NET 4.0 中网络共享的异常保存配置

.net - 我的 ConfigurationSection 的 xsd 模式

timezone - Windows Embedded CE 6.00 无法运行 Net Compact Framework 3.5 应用程序

java - 使用 Joda-Time 获取给定日期和时区的 UTC 偏移量