2015-07-22 6 views
2

У меня возникли проблемы с отображением часовых поясов Joda для часовых поясов Windows.отображение часового пояса joda для часового пояса Windows (например, в C#)

Я использую xml CLDR mappings, и он работает для большинства переводов.

, тем не менее, это не имеет значения для нескольких временных зон Joda:

America/Indiana/Индианаполис, BST, Австралия/Виктория, Universal, Австралия/Новый Южный Уэльс, Америка/Fort_Wayne, Африка/Асмэрой , Америка/Кентукки/Луисвилл, Азия/Кашгар, США/Тихоокеанский регион, Австралия/Запад, Австралия/Квинсленд, Австралия/Юг, США/Восточная, США/Центральная, США/Аризона, Австралия/Тасмания, Нью-Йорк, США/Гора, Австралия/Eucla, GMT, Япония, CAT, Etc/GMT + 0, CST, PST, EST, Австралия/Канберра, Мексика/Генерал, Израиль, Канада/восток, Etc/GMT + 9, Канада/Cent ral, Австралия/Север

Где я могу найти сопоставление между этими часовыми поясами joda для оконных часовых поясов?

+0

Вы ищете объяснение того, как сопоставить их с использованием источников cldr и tzdb? Или вы ищете [код C# для перевода] (http://stackoverflow.com/a/17348822/634824)? –

+0

Я ищу способ наметить все часовые пояса Joda, включая те, которые были в вопросе. Возможно, что-то вроде CLDR, но включает в себя отсутствующие часовые пояса joda (CLDR не имеет отображения для указанных часовых поясов joda) .... – user1028741

ответ

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 записей из tzdb.

  • Теперь проверьте файл /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 АМ
    • Пример unmappable зоны: Australia/Lord_Howe

      • Существует в timezone.xml, но не в windowsZones.xml.
      • В настоящее время для этого местоположения отсутствует часовой пояс Windows.
  • У вас есть несколько элементов в списке (BST, CAT, CST,), которые не являются допустимыми зоны tzdb, даже Joda-Time's list. Это могут быть аббревиатуры или имена правил, но они не являются идентификаторами зон.