Сопоставление часового пояса joda с часовым поясом windows (например, в C#)
У меня проблемы с отображением часовых поясов JODA в Windo ws.
Я использую xml сопоставлений CLDR, и он работает для большинства переводов.
тем не менее, он не имеет значений для нескольких часовых поясов йода:
Америка / Индиана / Индианаполис, BST, Австралия / Виктория, Юниверсал, Австралия / Новый Южный Уэльс, Америка / Форт-Уэйн, Африка / Асмэра, Америка / Кентукки / Луисвилл, Азия / Кашгар, США / Тихий океан, Австралия / Запад, Австралия / Квинсленд, Австралия / Юг, США / Восток, США / Центр, США / Аризона, Австралия / Тасмания, Новая Зеландия, США / Гора, Австралия / Евкла, GMT, Япония, CAT, Etc/GMT+0, CST, PST, EST, Австралия / Канберра, Мексика / Генерал, Израиль, Канада / Восточная, И т.д. /GMT+9, Канада / Центральная, Австралия / Северная
Где я могу найти отображение между этими часовыми поясами joda и часовыми поясами Windo ws?
1 ответ
Используя чистые данные CLDR:
Проверьте зону в
/common/bcp47/timezone.xml
файл.Если это не первая запись в
alias
поле, затем используйте первую запись. Пример:<type name="aumel" description="Melbourne, Australia" alias="Australia/Melbourne Australia/Victoria"/>
Ты можешь видеть
Australia/Victoria
как второй пункт, так что это псевдонимAustralia/Melbourne
, Обратите внимание, что канонические зоны CLDR не совсем соответствуют определению TZDB канонических, поэтому используйте эти отображения CLDR, а неlink
записи из цдб.Теперь проверьте
/common/supplemental/windowsZones.xml
файл. Пример:<mapZone other="AUS Eastern Standard Time" territory="AU" type="Australia/Sydney Australia/Melbourne"/>
type
поле содержит одну или несколько зон tzdb.other
поле содержит соответствующую зону Windows.Имейте в виду, что не все зоны tzdb имеют действительную соответствующую зону Windows, а некоторые не являются идеальными отображениями.
Пример несовершенного отображения:
America/Havana
=>Eastern Standard Time
- Дни перехода на летнее время совпадают, но Куба переходит в полночь вместо 2 часов ночи.
Пример не отображаемой зоны:
Australia/Lord_Howe
- Существует в timezone.xml, но не в windowsZones.xml.
- В настоящее время нет записи о часовом поясе Windows для этого местоположения.
У вас есть несколько пунктов в вашем списке (
BST
,CAT
,CST
,PST
), которые не являются действительными зонами tzdb, даже по списку Joda-Time. Это могут быть сокращения или имена правил, но они не являются идентификаторами зоны.