将 .Net TimeZoneInfo 转换为 POSIX 时区
Convert .Net TimeZoneInfo to POSIX time zone
我需要将 .Net 中的时区转换为 POSIX timezone。我可以通过 GetAdjustmentRules
从 TimeZoneInfo
获取夏令时开始、结束和增量,但我仍然会丢失时区缩写代码(例如 MST/MDT、PST/PDT 等).在 C# .Net 中执行此操作。
本质上,我要找的是相反的:Convert a posix style timezone to timezoneinfo in c# .net
是否有针对此类问题的现有解决方案?或者有人知道我在哪里可以获得标准和夏令时缩写代码吗?
我刚刚添加了对 POSIX 时区字符串的支持,作为我的 TimeZoneConverter project. It is in a separate package called 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 转换。
- 他们不为自己提供任何历史变化。
关于最后一点,上面显示的示例使用 当前 年份,但也有重载来提供年份以生成特定于该年份的字符串。
我需要将 .Net 中的时区转换为 POSIX timezone。我可以通过 GetAdjustmentRules
从 TimeZoneInfo
获取夏令时开始、结束和增量,但我仍然会丢失时区缩写代码(例如 MST/MDT、PST/PDT 等).在 C# .Net 中执行此操作。
本质上,我要找的是相反的:Convert a posix style timezone to timezoneinfo in c# .net
是否有针对此类问题的现有解决方案?或者有人知道我在哪里可以获得标准和夏令时缩写代码吗?
我刚刚添加了对 POSIX 时区字符串的支持,作为我的 TimeZoneConverter project. It is in a separate package called 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 转换。
- 他们不为自己提供任何历史变化。
关于最后一点,上面显示的示例使用 当前 年份,但也有重载来提供年份以生成特定于该年份的字符串。