【发布时间】:2018-12-20 14:05:34
【问题描述】:
我需要将 .Net 中的时区转换为 POSIX timezone。我可以从TimeZoneInfo 通过GetAdjustmentRules 获得夏令时开始、结束和增量,但是我仍然会丢失时区缩写代码(例如 MST/MDT、PST/PDT 等)。在 C# .Net 中执行此操作。
基本上,我正在寻找的是与此相反的内容:Convert a posix style timezone to timezoneinfo in c# .net
是否有针对此类问题的现有解决方案?或者有谁知道我在哪里可以获得标准和夏令时缩写代码?
【问题讨论】:
-
为什么要这样做?这种格式在 AIX 之外很少使用,并且存在很多问题 - 如果规则发生变化会发生什么,就像俄罗斯每隔几年就会发生的那样? IANA/Olson 时区(该链接称为 Olson)是所有系统的事实上的标准,从智能手机到航空公司的大型机。在 .NET 中,您可以使用 NodaTime 处理 IANA 时区。如果您需要与 AIX 通信,您可能应该使用 Olson
-
@PanagiotisKanavos 使用一系列设备,这些设备似乎已经从其 Linux 发行版中清除了标准时区库,而是选择了 POSIX 标准。我会试试 NodaTime。谢谢!
-
我不寒而栗地想到规则改变时会发生什么。在任何情况下,您都可以使用已编译的 tzdata 数据库附带的 NodaTime,但我怀疑您希望能够解析 TZ 环境变量。在任何情况下,您不应该依赖 TimeZoneInfo。是时候 ping 我认为的 NodaTime 作者了
-
看起来有一个 NodaTime Issue 关于 Linux 上的 TimeZoneInfo 故障以及他们如何为库修复它