由 Microsoft 提供的用于 Windows 和 .Net
TimeZoneInfo
类的 (在 Windows 上运行时) 标识的时区,例如"Eastern Standard Time"
.由 IANA 在 TZDB 中提供的并且在 Linux 或 OSX 上运行时 .NET
TimeZoneInfo
类使用的被标识为"America/New_York"
的时区。
许多基于互联网的 API 使用 IANA 时区,但由于各种原因,可能需要将其转换为 Windows 时区 ID,或反之亦然。
如何在 .Net 中实现这一点呢?
(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi
转换成Asia/Calcutta
时,应该使用Asia/Kolkata
方法。看起来TzdbDateTimeZoneSource
包含旧的值。 - Anto SubashIanaToWindows
方法转换Asia/Kolkata
时失败了,但是使用旧名称Asia/Calcutta
可以正常工作。您已经更新了WindowsToIana
方法,但是IanaToWindows
也存在同样的问题。还有一些其他无法工作的区域,如America/Argentina/Buenos_Aires
、America/Indiana/Indianapolis
和Asia/Kathmandu
。 - Anto SubashIanaToWindows
方法来进行补偿。非常感谢! - Matt Johnson-Pintvar canonical = tzdbSource.CanonicalIdMap[ ianaZoneId ]; links = Enumerable.Repeat( canonical, 1 ).Concat( links );
对我很有帮助。 - Johannes Rudolph