我需要将时区和其他数据保存到文件中,并从多个平台(Linux,WinRT,Windows Phone 8,OS X,Android,iOS)读取文件。可能的语言是C++,C#,Java和Objective-C。
将时区偏移量保存为双精度数不足以满足我的需求,因为这会丢失夏令时信息,这很重要。根据日期和时区,凌晨 2 点 + 2 小时可能是凌晨 3 点、凌晨 4 点或凌晨 5 点。
是否有普遍支持的可序列化时区格式?
似乎最好的答案是使用IANA/Olson/TZDB时区(在基于Unix的系统上受支持),并将其转换为基于Windows的平台。 2 路转换似乎不可靠,因此最可行的选择似乎是将 .NET 中的默认日期时间框架替换为 NodaTime,如多个相关问题中所述:
- 从 iPad (目标 C) 到 MVP Web API (C#) 的时区映射
- 如何在 Windows 和 IANA 时区之间进行翻译?
- 将 Olson TZID 转换为 Windows 时区
- 如何将 C# 中的时区信息转换为 Java 中的时区信息?