如何parsing包括Joda时间在内的date

这段代码总是将date分析到当前时区,而不是分析正在分析的string中的时区。

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 

任何想法我做错了什么?

好的,谷歌进一步给了我自己的问题的答案:使用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"); 

这工作。

你也可以select:

 // parse using the Paris zone DateTime date = formatter.withZone(DateTimeZone.forID("Europe/Paris")).parseDateTime(str);