2017-05-28 87 views
-2

我不明白什麼是用下面的代碼會錯:的SimpleDateFormat不日期解析字符串時,我使用setLenient()

SimpleDateFormat formatter = new SimpleDateFormat("MM.dd.yy hh:mm:ss"); 
formatter.setLenient(false); 
formatter.parse("04.29.2017 00:55:05"); 

當我試圖用日期來解析字符串我有一個java.text.ParseException。我的代碼有什麼問題?

+3

這應該是'yyyy'如果你的年是4個字符長。爲什麼你要嚴格? –

+2

此外,該文檔還說:「h \t上午/下午(1-12)小時」。 00因此不在有效範圍內。閱讀javadoc(以及異常的消息和堆棧跟蹤)。 –

+0

我不想分析錯誤的日期,如「33.13.2017 00:55:05」。我看到setLenient(false)可以在這種情況下提供幫助。 – Barmaglot1990

回答

2

hh預期範圍爲1到12.如果您希望它與寬鬆關閉,請將其更改爲HH(0到23)。

1

您需要使用yyyy格式(因爲2017年是yyyy)。

我也刪除了formatter.setLenient(false);,因爲這不是必需的。

像這樣:

public class DateParse { 
    public static void main(String[] args) throws ParseException { 
     SimpleDateFormat formatter = new SimpleDateFormat("MM.dd.yyyy hh:mm:ss"); 
     Date myDate = formatter.parse("04.29.2017 00:55:05"); 

     System.out.println(myDate); 
    } 
} 

輸出:

星期六年04月29 0時55分05秒BST 2017年