私は次の好奇心に出くわしました: -米国のタイムゾーンの3文字の略語が夏時間に矛盾するのはなぜですか?
TimeZone.getTimeZone
は("Pacific Standard Time")夏時間を観察America/Los_Angeles
、と等価としてみなし;- となりますが、夏時間の影響を受けない
UTC-7
と同等であると考えられます(("Mountain Standard Time"))。
これは、次のスニペットを証明することができる。
System.out.println(
TimeZone.getTimeZone("MST").hasSameRules(TimeZone.getTimeZone("GMT-7")));
System.out.println(
TimeZone.getTimeZone("PST").hasSameRules(TimeZone.getTimeZone("America/Los_Angeles")));
出力:
true
true
そして、私たちは3文字の略称を使用してタイムゾーンを取得したことを証明することができます米国の4つの主要なタイムゾーンは夏時間の使用に矛盾しています:
for (String id : Arrays.asList("EST", "CST", "MST", "PST")) {
TimeZone tz = TimeZone.getTimeZone(id);
System.out.printf("%s is %s; observes DST: %s%n",
id, tz.getDisplayName(false, TimeZone.LONG), tz.useDaylightTime());
}
出力:
EST is Eastern Standard Time; observes DST: false
CST is Central Standard Time; observes DST: true
MST is Mountain Standard Time; observes DST: false
PST is Pacific Standard Time; observes DST: true
ほかに3文字の略語が最高とにかく回避されているという事実から、(Javadocは言う、 "しかし、その使用は推奨されていません...")これは非常に混乱しているようで、複数のタイムゾーンで夏時間の節約が期待されているかどうかは不明です。
この動作の違いには理由がありますか?この動作が予想されることを意味する米国のタイムゾーンの微妙な特性はありますか?
私は、[Jon Skeet](http://stackoverflow.com/users/22656/jon-skeet)の質問と思います。 – Azodious