Кроссплатформенная сериализация часовых поясов

Мне нужно сохранить часовые пояса вместе с другими данными в файл и прочитать файл с нескольких платформ (Linux, WinRT, Windows Phone 8, OS X, Android, iOS). Вероятные языки — C++, C#, Java и Objective-C.

Сохранения смещения часового пояса как двойного недостаточно для моих нужд, потому что при этом теряется информация о переходе на летнее время, что важно. В зависимости от даты и часового пояса 2 часа ночи + 2 часа могут быть 3 часа ночи, 4 часа утра или 5 часов утра.

Существует ли универсально поддерживаемый сериализуемый формат часового пояса?


person Peter    schedule 22.02.2014    source источник
comment
Я не уверен, что вам нужно что-то отличное от ISO 8601. Вам нужно хранить время или вас интересует только смещение часового пояса?   -  person kokeksibir    schedule 22.02.2014
comment
Ни один. Часовые пояса имеют динамическое смещение, которое в случае перехода на летнее время меняется два раза в год. Вот почему - если это возможно - я хочу сохранить часовой пояс, а не только статическое смещение часового пояса. Одноплатформенный подход для этого заключается в использовании класса TimeZoneInfo в .NET.   -  person Peter    schedule 22.02.2014
comment
Насколько мне известно, часовые пояса не имеют динамического смещения. Но страна/регион переключается между часовыми поясами для перехода на летнее время. Например, моя страна использует EET (UTC+2) для зимы и EEST (UTC+3) для лета.   -  person kokeksibir    schedule 22.02.2014
comment
Я имею в виду часовой пояс как концепцию, реализованную здесь: userguide.icu-project.org/datetime /timezone и здесь msdn .microsoft.com/en-us/library/   -  person Peter    schedule 22.02.2014


Ответы (1)


Кажется, лучший ответ — использовать часовые пояса IANA/Olson/TZDB (которые поддерживаются системы на базе Unix) и преобразовать их для платформ на базе Windows. Двустороннее преобразование кажется ненадежным, поэтому наиболее подходящим вариантом является замена стандартной структуры даты и времени в .NET на NodaTime, как описано в нескольких связанных вопросах:

person Peter    schedule 22.02.2014
comment
да. Ты прав. См. также: Правильный способ хранения часового пояса в базе данных?, который исходит из другой точки зрения, но похож на природа. - person Matt Johnson-Pint; 24.02.2014