2014-02-22 91 views
1

我需要將時區和其他數據一起保存到文件中,並從多個平臺(Linux,WinRT,Windows Phone 8,OS X,Android,iOS)讀取文件。可能的語言是C++,C#,Java和Objective-C。跨平臺時區序列化

將時區偏移量保存爲雙精度不足以滿足我的需要,因爲這會丟失夏令時信息,這非常重要。根據日期和時區,上午2點+2點可能是凌晨3點,凌晨4點或凌晨5點。

是否有通用支持的可串行化時區格式?

+0

我不知道,如果你需要的東西比ISO 8601不同的你需要存儲的時間,還是你只關心時區偏移? – kokeksibir

+0

都不是。時區有一個動態的偏移量,在夏令時的情況下每年更改兩次。這就是爲什麼 - 如果可行 - 我想保存時區,而不僅僅是靜態時區偏移量。一個單平臺的方法是在.NET中使用'TimeZoneInfo'類。 – Peter

+0

據我所知,時區沒有動態偏移量。但是國家/地區在夏令時時區之間切換。例如,我國在冬季使用EET(UTC + 2),在夏季使用EEST(UTC + 3)。 – kokeksibir

回答

2

看來最好的答案是使用IANA/Olson/TZDB時區(基於Unix的系統支持),並將它們轉換爲基於Windows的平臺。 2路轉換似乎是不可靠的,因此,最可行的選擇似乎是NodaTime取代.NET中的默認日期時間框架,在多個相關問題描述:

+1

是的。你是對的。另請參閱:[以正確的方式在數據庫中存儲時區?](http://stackoverflow.com/q/15824482/634824),它來自不同的角度,但本質上相似。 –