Как преобразовать информацию о часовом поясе в 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
на Яве.