如何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);