我有以下单元测试:
@Test
public void testDateParsing() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("E, dd MMM yyyy HH:mm:ss Z (z)");
String dateString = "Mon, 5 Mar 2001 08:23:00 -0800 (PST)";
ZonedDateTime dateTime = ZonedDateTime.parse(dateString, formatter);
}
失败并抛出DateTimeParseException
,我无法弄清楚原因。这是一个例外:
java.time.format.DateTimeParseException: Text 'Mon, 5 Mar 2001 08:23:00 -0800 (PST)' could not be parsed at index 5
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1947)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1849)
at java.time.ZonedDateTime.parse(ZonedDateTime.java:597)
at parser.ParserTest.testDateParsing(Parser.java:26)
知道这个日期有什么问题吗?其他日期,如下面的工作正常:
String dateString = "Wed, 15 Mar 2000 08:52:00 -0800 (PST)";
答案 0 :(得分:3)
这是因为您'dd'代表日期,但在您的示例字符串中,您有'5'作为日期组件。如果它是05日期而不是它正确解析的日期。对于您的日期字符串,模式应为:
DateTimeFormatter.ofPattern("E, d MMM yyyy HH:mm:ss Z (z)")
答案 1 :(得分:0)
此代码在删除dd后工作,只需使用d,尝试和工作:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("E, d MMM yyyy HH:mm:ss Z (z)");
String dateString = "Mon, 5 Mar 2001 08:23:00 -0800 (PST)";
ZonedDateTime dateTime = ZonedDateTime.parse(dateString, formatter);