Java 如何解析包含时区和Joda Time的日期
这段代码总是将日期解析为当前时区,而不是解析字符串中的时区Java 如何解析包含时区和Joda Time的日期,java,datetime,timezone,jodatime,Java,Datetime,Timezone,Jodatime,这段代码总是将日期解析为当前时区,而不是解析字符串中的时区 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 =
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
你知道我做错了什么吗?好的,进一步的谷歌搜索给了我自己问题的答案:使用,所以: 这很有效。您还可以选择:
// parse using the Paris zone
DateTime date = formatter.withZone(DateTimeZone.forID("Europe/Paris")).parseDateTime(str);
谢谢:D你是个和蔼可亲的人!在我看来,
DateTimeFormatter
的默认行为似乎违反了“最小惊讶原则”,尤其是在解组器的情况下。感谢Steve挖掘了withOffsetParsed()
。我不得不承认默认行为——即忽略正确解析的时区——是奇怪的。
// parse using the Paris zone
DateTime date = formatter.withZone(DateTimeZone.forID("Europe/Paris")).parseDateTime(str);