54

このコード スニペットは、解析対象の文字列のタイムゾーンではなく、常に日付を現在のタイムゾーンに解析します。

final DateTimeFormatter df = DateTimeFormat
        .forPattern("EEE MMM dd HH:mm:ss 'GMT'Z yyyy");
final DateTime dateTime = df
        .parseDateTime("Mon Aug 24 12:36:46 GMT+1000 2009");
System.out.println("dateTime = " + dateTime);
// outputs dateTime = 2009-08-24T04:36:46.000+02:00

以下を出力します。

dateTime = 2009-08-24T04:36:46.000+02:00

一方、私は期待しています:

dateTime = 2009-08-24T04:36:46.000+10:00

私が間違っていることはありますか?

4

3 に答える 3

76

OK、さらにグーグルすると、私自身の質問に対する答えが得られました: use withOffsetParsed()、そのように:

final DateTimeFormatter df = DateTimeFormat
        .forPattern("EEE MMM dd HH:mm:ss 'GMT'Z yyyy");
final DateTime dateTime = df.withOffsetParsed()
        .parseDateTime("Mon Aug 24 12:36:46 GMT+1000 2009");

これは機能します。

于 2009-08-25T10:19:07.533 に答える