将.NET TimeZoneInfo转换为POSIX时区



我需要将.net中的时区转换为posix时区。我可以通过GetAdjustmentRulesTimeZoneInfo获取日光启动,结束和DELTA,但是随后我仍然缺少时区缩写代码(例如MST/MDT,PST/PDT等)。在c#.net中执行此操作。

本质上,我正在寻找的与此相反的是:将POSIX样式时区转换为C#.NET中的TimeZoneInfo

是否有这样的解决方案?还是有人知道我可以在哪里获得标准和日光时间缩写代码?

我刚刚添加了对POSIX时区字符串的支持,作为我的TimeZoneConverter项目的附加组件。它在一个称为TimeZoneConverter.Posix的单独软件包中。安装它,您可以执行以下操作:

string posix = PosixTimeZone.FromTimeZoneInfo(SomeTimeZoneInfoObject);

另外,您可以简单地提供Windows时区ID或IANA时区名称,这也可以工作:

string posix = PosixTimeZone.FromWindowsTimeZoneId("Eastern Standard Time");
// Result: "EST5EDT,M3.2.0,M11.1.0"
string posix = PosixTimeZone.FromIanaTimeZoneName("Australia/Sydney");
// Result: "AEST-10AEDT,M10.1.0,M4.1.0/3"

请记住,您仍处于POSIX时区的局限性:

  • 他们每年只能支持两个过渡。
  • 并非所有时区过渡是针对DST的。有些是用于标准时间的变化,在这里没有反映。他们看起来像DST过渡。
  • 他们没有向自己提供任何历史变化。

在最后几点,上面显示的样本使用了当前年,但是也有超负荷可以提供一年来生成特定于当年的字符串。

相关内容

  • 没有找到相关文章

最新更新