DateFormat如何在java中解析精确的日期(如.NET中的DateTime.ParseExact)?

DateFormat如何在java中解析精确的日期(如.NET中的DateTime.ParseExact)?,java,date,Java,Date,该问题由以下代码提出: DateFormat DF = new SimpleDateFormat("yyyyMMdd"); String dateString = "20110133"; System.out.println(DF.parse(dateString)); // Wed Feb 02 00:00:00 CET 2011 parse方法将1月33日转换为2月2日。 如果dateString不代表实际日期,是否有方法引发异常 就像在.NET中一样。尝试这样做 DF.setLenien

该问题由以下代码提出:

DateFormat DF = new SimpleDateFormat("yyyyMMdd");
String dateString = "20110133";
System.out.println(DF.parse(dateString));
// Wed Feb 02 00:00:00 CET 2011
parse
方法将1月33日转换为2月2日。 如果
dateString
不代表实际日期,是否有方法引发异常

就像在.NET中一样。

尝试这样做

DF.setLenient(false);

您可以使用DateFormat类的
setLenient(boolean)
方法告诉它不要对无效的日期宽容(即接受然后转换)。

它不是完美的,不会在所有情况下都起作用,请参见不总是起作用,请参见此