2013-02-09 23 views
3

以下代碼嘗試使用給定格式分析日期31-Feb-2013 13:02:23帶Java中的SimpleDateFormat的日期

DateFormat dateFormat=new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss"); 
System.out.println(dateFormat.parse("31-Feb-2013 13:02:23")); 

它返回Sun Mar 03 13:02:23 IST 2013

我需要使無效日期無效日期。這個(等等)日期不應該被解析(或者應該以任何其他方式失效)。這可能嗎?

回答

4

使用DateFormat.setLenient(boolean)false參數:

DateFormat dateFormat=new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss"); 
dateFormat.setLenient(false); 
System.out.println(dateFormat.parse("31-Feb-2013 13:02:23")); 
4

Java的日期計算是寬鬆的。通過寬鬆的解析,解析器可以使用啓發式來解釋不精確匹配此對象格式的輸入。

您必須通過虛假寬鬆dateformat其中嚴格模式。通過嚴格的解析,輸入必須匹配這個對象的格式。

DateFormat dateFormat=new SimpleDateFormat("..."); 
dateFormat.setLenient(false); // turn on Strict mode 
dateFormat.parse("31-Feb-2013 13:02:23");// throws java.text.ParseException 
+0

既然答案都很好,我已經接受了最老的答案。請不要介意。 – Tiny 2013-02-09 08:43:43

相關問題