1. ホーム
  2. java

[解決済み] タイムゾーンESTとEST5EDTはどのように違うのですか?重複

2022-02-07 22:42:50

質問

ESTとEST5EDTはどのように違うのですか?ESTはサマータイムを考慮していないのでしょうか?

この違いを調べるために小さなJavaスニペットを書いたところ、EST5EDTは夏時間を考慮しているのに対し、ESTは考慮していないことが出力されました。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss.SSS"); 
dateFormat.setTimeZone(TimeZone.getTimeZone("EST5EDT")); 
System.out.println("EST5EDT" +dateFormat.format(new Date()));
    /* prints EST5EDT2013-Apr-05 02:24:16.471 */  


dateFormat = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss.SSS"); 
dateFormat.setTimeZone(TimeZone.getTimeZone("EST")); 
System.out.println("EST "+dateFormat.format(new Date()));
   /*prints EST 2013-Apr-05 01:24:16.472 */

しかし、以下のスニペットはショッキングな出力を生成しました。

System.out.println("EST5EDT offset "+TimeZone.getTimeZone("EST5EDT").getRawOffset()/(60*60*1000));
/* prints 5 instead of 4 (DST) */

なぜ getRawOffset は 4 ではなく 5 を返すのでしょうか? DSTでタイムゾーンのオフセットを取得する方法は?

解決方法は?

<ブロッククオート

東部標準時は夏時間を考慮していないのですか?

いいえ、定義ではESTはquot;東部標準時、またはUTC-5:00です。

EDTはquot;東部夏時間、またはUTC-4:00です。

例えば、ニューヨークではESTとEDTが、シアトルではPSTとPDTが切り替わるので、ちょっとわかりにくいですね。

時々、「東部標準時の午後1時に電話します」と言う人がいますが、実際には「東部標準時の午後1時に電話します」と言うべきで、夏時間かどうかを正しく考慮したものです。

この ウィキページ は、もう少し詳しい情報があります。

<ブロッククオート

なぜ getRawOffset は 4 ではなく 5 を返すのでしょうか?

タイムゾーン.getRawOffset に対して常にミリ秒単位で返されます。 標準 時間であり、5 * (60 * 60 * 1000)である。

UTCオフセットは(夏時間を考慮し)曜日によって変わるので、その場合は 取得オフセット で、使用したい日付を指定します。