c# - 将 .Net TimeZoneInfo 转换为 POSIX 时区
问题描述
我需要将 .Net 中的时区转换为POSIX 时区。TimeZoneInfo
我可以从via获取夏令时开始、结束和增量GetAdjustmentRules
,但是我仍然会丢失时区缩写代码(例如 MST/MDT、PST/PDT 等)。在 C# .Net 中执行此操作。
本质上,我正在寻找的是与此相反的:Convert a posix style timezone to timezoneinfo in c# .net
是否有针对此类问题的现有解决方案?或者有谁知道我在哪里可以获得标准和夏令时缩写代码?
解决方案
我刚刚添加了对 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 转换。
- 他们没有为自己提供任何历史变化。
最后一点,上面显示的示例使用当前年份,但也有提供年份来生成特定于该年份的字符串的重载。
推荐阅读
- php - 通过谷歌登录:获得访问令牌后该怎么办?
- reactjs - 可选问号和对象销毁
- powershell - 无法在 WMI 类“日期时间”属性中插入数据
- linux-kernel - 您是否需要一个实时操作系统来确保您的程序永远不会脱离 CPU?
- angular - 离子和科尔多瓦错误离子科尔多瓦准备ios
- c++ - 为什么我需要使这个非朋友 == 运算符重载成员函数以避免“未定义引用”错误?
- javascript - react canvas.scale 在设置时似乎行为不正确
- html - 使用 highlight.js CDN
- python - 为什么没有从数据框中删除所有异常值?
- ios - UIColorPickerViewController 拖动关闭未触发