日期解析失败

时间:2016-03-03 05:51:14

标签: java date

我有以下单元测试:

    @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)";

2 个答案:

答案 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);