0

サーバーから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ます。なんで?

4

3 に答える 3

1

ここでの問題は DST (夏時間) だと思います。基準は冬時間です。今は夏なので、1時間の差があります。+0200国に依存するため、夏時間をサポートしない、またはサポートできないタイムゾーン シフト構文を使用しています。

Europe/Amsterdamの代わりに、タイム ゾーン定義のロケール固有の構文を使用する必要があります+0100。さらに、クラスの API を見てみましょうTimeZone:

  • inDaylightTime(Date date)
  • useDaylightTime()
于 2012-09-02T11:11:51.587 に答える
0

おそらく問題の原因である戻り値のタイムゾーンを確認してください。

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));
于 2012-09-02T10:57:23.223 に答える
0

それを試してみてください

formatter = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z");
于 2012-09-02T11:00:00.457 に答える