Как преобразовать информацию о часовом поясе в C# в информацию о часовом поясе в Java?

У меня есть система, которая состоит из серверной части C# и внешнего интерфейса Java. Серверная часть C# взаимодействует с другими системами и некоторыми мобильными устройствами.

На стороне C# моя задача, среди прочего, распознать часовой пояс временных меток, поступающих с мобильных устройств, и создать соответствующий TimeZoneInfo объект. Это работает без проблем.

На стороне Java я должен отобразить информацию о часовом поясе вместе с данными, отправленными мобильным устройством. Я использую TimeZone класс для хранения информации о часовом поясе в объектах моего домена.

Теперь вопрос в том, как я могу создать Java TimeZon e объект, который соответствует C# TimeZoneInfo объект? AFAIK часовые пояса не имеют уникальных идентификаторов. Кроме того, имена также отличаются (например, в C#: " Central Europe Standard Time "на Яве " Central Europe Time "). Даже количество часовых поясов в C# и Java не равно!

2 ответа

Решение

Вы знаете, что "время" не зависит от "часового пояса", поэтому я не буду описывать этот момент:)

"TimeZone" действительно больше зависит от вашей ОС, чем от языка программирования.

Android "Идентификаторы часовых поясов" соответствуют стандарту IANA "База данных Олсона":

Другая половина уравнения отображает часовые пояса.Net в "стандарт". Эта ссылка должна помочь:

Как говорит paulsm4, вы можете сопоставить имена Windows с именами TZDB (также известными как Olson, aka tz, aka zoneinfo) - хотя отображение периодически меняется, и вам действительно стоит взглянуть на Unicode CLDR для получения более подробной информации. Вы должны знать, что формат таблицы сопоставления со временем менялся, и что некоторые идентификаторы Windows отображаются на несколько идентификаторов TZDB. (Некоторые полностью отсутствуют.)

В качестве альтернативы вы могли бы рассмотреть возможность полного отказа от идентификаторов часовых поясов Windows и использовать TZDB во всем стеке, если вы используете Noda Time, API-интерфейс даты и времени.NET, над которым я работал некоторое время. Вы также найдете свою работу с датой и временем на Java проще, если будете использовать Joda Time, библиотеку, на которой я основал "движок" Noda Time. Это гораздо приятнее, чем с помощью Date а также Calendar на Яве.

Другие вопросы по тегам