再投稿の場合は申し訳ありません。適切な答えが見つかりませんでした。
ベストプラクティスと非推奨のAPIの使用は無視してください。
次の日付「 MonMay1902:16:52EDT2003」を「MM/dd / yyyyHH:mm:ss 」にフォーマットしたいと思います。繰り返しますが、出力形式を変更したいだけで、これはESTにある私のラップトップから実行されています。
私のWindowsの地域設定は次のとおりです。
現在のタイムゾーン:東部夏時間
タイムゾーン:(GMT-05:00)東部標準時(米国およびカナダ)
夏時間の変更に合わせて時計を自動的に調整する:チェック済み
このJavaコードはそれを行います:
Date aDate = new Date("Mon May 19 02:16:52 EDT 2003");
SimpleDateFormat sdf = new SimpleDateFormat( "MM/dd/yyyy HH:mm:ss");
System.out.println("Formatted Date: " + sdf.format(aDate));
出力は
Formatted Date: 05/19/2003 02:16:52
ここで、ウィンドウ設定を次のように変更します(DST設定のチェックを外すだけです)。
現在のタイムゾーン:東部夏時間
タイムゾーン:(GMT-05:00)東部標準時(米国およびカナダ)
夏時間の変更に合わせて時計を自動的に調整する:チェック済み
出力は次のとおりです。
Formatted Date: 05/19/2003 01:16:52
質問:
- なぜ出力が1時間ずれているのですか?
- フォーマットするときでも、JavaはWindows DST設定を使用しますか?ただし、Javaは、さまざまなタイムゾーンのDST設定時間について独自のデータを保持しています。