Как автор библиотеки TimeZoneNames, я могу объяснить, почему это происходит.
Во-первых, America/Phoenix
карты к America_Mountain
metazone в the CLDR metaZones.xml
file
<timezone type="America/Phoenix">
<usesMetazone mzone="America_Mountain"/>
</timezone>
Другие часовых поясов также в одной и той же мета зоне:
<timezone type="America/Denver">
<usesMetazone mzone="America_Mountain"/>
</timezone>
Затем в каждом файле языка CLDR, такие как the en.xml
file для английского языка вы увидите запись метазона с ее локализованными строками:
Итак, в CLDR нет информации о том, применим ли DST в Аризоне или нет. Имейте в виду, что в Аризоне действительно был DST в прошлом - last in 1967. Таким образом, без данных TZDB, которые вы найдете в Noda Time, вы не можете определить, действует ли DST или нет в определенный момент времени.
Jon's answer показывает, как вы будете тестировать, если DST действует с использованием Noda Time. После того, как вы получите результат, вы можете выбрать стандартную или дневную строку из TimeZoneNames соответственно.
Что касается общего имени, которое обычно используется, когда человек относится к часовому поясу в целом, а не к части времени дневного света или к стандартной части времени. Один вариант использования - выбор часового пояса, например, демонстрируется here.
Вы имеете в виду использование https://github.com/mj1856/TimeZoneNames? Пока неясно, как выглядит ваш код на данный момент. Было бы полезно использовать [mcve]. –