サーバーからE, dd MMM yyyy HH:mm:ss Zタイムゾーンの形式で日付を取得しました+0200
yyyy-MM-dd HH:mm:ssを使用して独自の形式で解析します
myFormat.format(serverFormat.parse(dateString));
そして、私は時間を間違えました。それは 1 時間前です。したがって、10:00変換すると、 が得られ09:00ます。なんで?
サーバーからE, dd MMM yyyy HH:mm:ss Zタイムゾーンの形式で日付を取得しました+0200
yyyy-MM-dd HH:mm:ssを使用して独自の形式で解析します
myFormat.format(serverFormat.parse(dateString));
そして、私は時間を間違えました。それは 1 時間前です。したがって、10:00変換すると、 が得られ09:00ます。なんで?
ここでの問題は DST (夏時間) だと思います。基準は冬時間です。今は夏なので、1時間の差があります。+0200国に依存するため、夏時間をサポートしない、またはサポートできないタイムゾーン シフト構文を使用しています。
Europe/Amsterdamの代わりに、タイム ゾーン定義のロケール固有の構文を使用する必要があります+0100。さらに、クラスの API を見てみましょうTimeZone:
inDaylightTime(Date date) useDaylightTime()おそらく問題の原因である戻り値のタイムゾーンを確認してください。
DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
formatter.setTimeZone(TimeZone.getTimeZone("GMT+2"));
System.out.println( formatter.format(serverFormat.parse(dateString));
それを試してみてください
formatter = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z");