2013-02-09 73 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

相关问题