2016-03-03 54 views
1

我有以下的单元测试:日期解析失败

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

回答

3

这是因为你有“DD”表示日期,但在您的示例字符串中,您有'5'作为日期组件。如果它的日期是05年,那么它的分析是正确的。对于你的日期字符串,模式应该是:

DateTimeFormatter.ofPattern("E, d MMM yyyy HH:mm:ss Z (z)") 
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); 
+0

你是不是故意这么做'试试这件事?因为这真的很聪明。 –

+0

请添加一些解释。目前,您的答案被标记为“低质量”,可能会被删除。 –