3

以下代码尝试解析31-Feb-2013 13:02:23具有给定格式的日期。

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

2 回答 2

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"));
于 2013-02-09T08:25:44.417 回答
4

Java 日期计算是宽松的。通过宽松的解析,解析器可以使用启发式方法来解释不精确匹配该对象格式的输入。

您必须将 false 传递给 lenient 以转换为Strict 模式的 dateformat 。使用严格的解析,输入必须匹配这个对象的格式。

DateFormat dateFormat=new SimpleDateFormat("...");
dateFormat.setLenient(false); // turn on Strict mode
dateFormat.parse("31-Feb-2013 13:02:23");// throws java.text.ParseException 
于 2013-02-09T08:26:02.450 回答