このコードスニペットは、解析される文字列のタイムゾーンではなく、常に現在のタイムゾーンに日付を解析します。
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
私が間違っていることは何ですか?
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");
これは動作します。
また、あなたが選択することができます:
// parse using the Paris zone
DateTime date = formatter.withZone(DateTimeZone.forID("Europe/Paris")).parseDateTime(str);