Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中使用SimpleDataFormat的日期_Java_Validation_Date_Simpledateformat - Fatal编程技术网

Java中使用SimpleDataFormat的日期

Java中使用SimpleDataFormat的日期,java,validation,date,simpledateformat,Java,Validation,Date,Simpledateformat,以下代码尝试用给定格式解析日期2013年2月31日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 我需要使指示无效日期的日期无效。这个(等等)日期不应该被解析(或者应该以任何其他方式无效)。这可能吗?使用

以下代码尝试用给定格式解析日期
2013年2月31日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

我需要使指示无效日期的日期无效。这个(等等)日期不应该被解析(或者应该以任何其他方式无效)。这可能吗?

使用带有
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"));

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

DateFormat dateFormat=new SimpleDateFormat("...");
dateFormat.setLenient(false); // turn on Strict mode
dateFormat.parse("31-Feb-2013 13:02:23");// throws java.text.ParseException 
您必须将false传递给LENCENT to dateformat,该dateformat将强制转换为严格模式。通过严格解析,输入必须与此对象的格式匹配

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

由于两个答案都很好,我接受了最老的一个。请不要介意。