2016-03-03 115 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

請添加一些解釋。目前,您的答案被標記爲「低質量」,可能會被刪除。 –