Java-检查日期是否对给定的日期格式有效

Java-检查日期是否对给定的日期格式有效,java,datetime,simpledateformat,Java,Datetime,Simpledateformat,我有下面的代码来检查给定的日期是否有效 SimpleDateFormat fromformatter = new SimpleDateFormat("MMYY"); fromformatter.setLenient(false); try { fromformatter.parse(dateString); valuesQuery.append("'" + dateString+ "',"); } catch (ParseException pe) { pe.print

我有下面的代码来检查给定的日期是否有效

SimpleDateFormat fromformatter = new SimpleDateFormat("MMYY");
fromformatter.setLenient(false);

try {
    fromformatter.parse(dateString);
    valuesQuery.append("'" + dateString+ "',");
} catch (ParseException pe) {
    pe.printStackTrace();
    valuesQuery.append("'notDate" + dateString+ "',");
}
现在,当我得到
dateString=“1803”不是有效日期,不会引发异常。此处使用的日期格式为
MMYY

我做错了什么

请注意,正则表达式对我没有帮助,因为日期格式将更改。

“mm”表示分钟。用“MMyy”代替。没有引发异常,因为18是分钟的有效值

SimpleDateFormat fromformatter = new SimpleDateFormat("MMyy");
请检查:。

java.time 使用现代的java.time类,而不是麻烦的遗留日期时间类

具体使用来表示这些值。它的
parse
方法将为无效输入引发异常

DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMuu" ) ;
try {
    YearMonth ym = YearMonth.parse( "1803" , f ) ;
} catch ( DateTimeParseException e ) {
    … handle error.
}

提示:如果可能,请使用标准格式而不是那种特殊格式。对于YYYY-MM的年-月,例如
2017-07

可能重复的
m
是分钟,
m
是月份:我尝试了MMYY,MMYY的两种组合。它没有捕获1803的异常对我来说,它与
MMyy
一起工作:它抛出
java.text.ParseException:unparseabable date:“1803”
我尝试了MMyy,MMyy的几个组合。它没有捕获1803年的异常