誰かが教えてください、次の2つのステートメントの違いは何ですか:
TimeZone.getTimeZone("America/New_York")
そして
TimeZone.getTimeZone("EST")
つまり、ESTがAmerica/New_Yorkと異なるのはなぜですか。また、私のアプリケーションでは、アメリカの現在のタイムゾーンを取得するには、America/New_YorkまたはESTを使用する必要があります。
ESTは、事実上、ニューヨークタイムゾーンのhalfです。標準時間ではalwaysです-夏時間の部分はありません。それは本当にではありません。それ自体が適切なタイムゾーン、IMO-フルタイムゾーンの「標準」の部分です。 just固定オフセットであり、特定の場所に関連しないタイムゾーンについて記述する場合、「Etc/GMT + 5」または同様に明らかに修正されたものを使用したいと思います。 (「東部標準時」など、「東部標準時」を観察する場所によってDSTの遷移が異なる場合があるため、一般的には「東部標準時」なども好きではありません。 some情報ですが、十分ではありません。)
そのため、特定の瞬間におけるニューヨークの現地時間actualを知りたい場合は、America/New_Yorkを使用します。
一般に、略語は避けてください。 ドキュメント から:
JDK 1.1.xとの互換性のために、他の3文字のタイムゾーンID(「PST」、「CTT」、「AST」など)もサポートされています。ただし、複数のタイムゾーンで同じ略語が使用されることが多いため(たとえば、「CST」は米国の「中央標準時」と「中国標準時」)、Javaプラットフォームそのうちの1つだけを認識できます。
(個人的には、Date
とCalendar
に近づかないことをお勧めします。可能な限り Joda Time を使用することをお勧めします。それは実際には別の問題です。)
ESTはUTC-5時間です。 America/New_Yorkは冬はESTで、夏はE * [〜#〜] d [〜#〜] * Tであるため、現在のニューヨークはUTC-4時間です。