我需要将.Net中的时区转换为POSIX timezone。我可以通过TimeZoneInfo
从GetAdjustmentRules
获取夏令时的开始,结束和增量时间,但是那时我仍然会缺少时区缩写代码(例如MST / MDT,PST / PDT等)。在C#.Net中执行此操作。
本质上,我要寻找的是与此相反的内容:Convert a posix style timezone to timezoneinfo in c# .net
是否存在针对此类问题的现有解决方案?还是有人知道我可以在哪里获得标准时间和夏令时的缩写代码?
答案 0 :(得分:1)
我刚刚为TimeZoneConverter项目添加了对POSIX时区字符串的支持。它位于称为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时区的限制:
最后一点,上面显示的示例使用了 current 年,但是也存在提供一年以生成特定于该年的字符串的重载。