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年的异常