ISODateTimeFormat.dateTime().parseDateTime() 无法解析 2015-11-18T00:00:00+0000

ISODateTimeFormat.dateTime().parseDateTime() cannot parse 2015-11-18T00:00:00+0000

我有这种格式的字符串“2015-11-18T00:00:00+0000”。我认为它是 ISO8601 格式并试图将它解析为 Joda DateTime 实例,但它告诉我它格式错误:

String toParse = "2015-11-18T00:00:00+0000";
DateTime date = ISODateTimeFormat.dateTime().parseDateTime(toParse);

我得到了这个错误:

java.lang.IllegalArgumentException: Invalid format: "2015-11-18T00:00:00+0000" is malformed at "+0000"

如何将上述字符串转换为 DateTime

方法 ISODateTimeFormat.dateTime() 需要您输入中缺少的毫秒部分。解决方法:使用方法dateTimeNoMillis().

String input = "2015-11-18T00:00:00+0000";
DateTime dt = ISODateTimeFormat.dateTimeNoMillis().parseDateTime(input);
System.out.println(dt); // 2015-11-18T01:00:00.000+01:00 (using offset of default timezone)

如果您想保留输入中包含的偏移量 (+0000),那么您还需要在格式化程序上调用 withOffsetParsed()