TimeZoneNamesライブラリの著者として、なぜこのようなことが起こるのか説明できます。
<timezone type="America/Denver">
<usesMetazone mzone="America_Mountain"/>
</timezone>
その後、各CLDR言語ファイルでは、このようなthe en.xml
fileとして:the CLDR metaZones.xml
file
<timezone type="America/Phoenix">
<usesMetazone mzone="America_Mountain"/>
</timezone>
その他の時間帯は、同じメタゾーンにもあるでAmerica_Mountain
metazoneへ
まず、America/Phoenix
マップ英語の場合は、ローカライズされた文字列でAmerica_Mountain
メタゾンエントリが表示されます。
<metazone type="America_Mountain">
<long>
<generic>Mountain Time</generic>
<standard>Mountain Standard Time</standard>
<daylight>Mountain Daylight Time</daylight>
</long>
<short>
<generic>MT</generic>
<standard>MST</standard>
<daylight>MDT</daylight>
</short>
</metazone>
DSTがアリゾナ州に適用されるかどうかについての情報はCLDRにはありません。アリゾナ州は過去にDSTを実際に持っていたことを覚えておいてください - last in 1967。したがって、にあるようなTZDBデータがなければ、特定の時点でDSTが有効かどうかを判断することはできません。
Jon's answerは、DSTがNoda Timeを使用しているかどうかをテストする方法を示しています。結果が得られたら、それに応じてTimeZoneNamesから標準または日光ストリングを選択できます。
一般名は、人間が一般的にタイムゾーンを参照しているときに通常使用され、夏時間部分または標準時刻部分ではありません。このためのユースケースの1つは、hereなどのタイムゾーン選択です。
https://github.com/mj1856/TimeZoneNamesを使用していることを意味しますか?あなたのコードが現時点でどのように見えるのかは不明です。 [mcve]は役に立ちます。 –