Java 如何检查输入日期(月和日)是否在合理范围内?
如何确保输入日期的月份和日期正确? 例如2021-99-99,显然没有这样的99月99日。如何确保输入的月数在12以内,并且与该月对应的天数正确 最小可复制代码示例:Java 如何检查输入日期(月和日)是否在合理范围内?,java,date,validation,Java,Date,Validation,如何确保输入日期的月份和日期正确? 例如2021-99-99,显然没有这样的99月99日。如何确保输入的月数在12以内,并且与该月对应的天数正确 最小可复制代码示例: SimpleDateFormat dateInput = new SimpleDateFormat("yyyy-MM-dd"); // In the real world the string will be entered by the user String strDate = "2021-99
SimpleDateFormat dateInput = new SimpleDateFormat("yyyy-MM-dd");
// In the real world the string will be entered by the user
String strDate = "2021-99-99";
try {
Date date = (Date) dateInput.parse(strDate);
System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(date));
} catch (ParseException e) {
System.out.println("Wrong format");
} catch (DateTimeParseException e) {
e.printStackTrace();
System.out.println("Invalid date");
}
预期结果:从任一catch
块打印异常和错误消息
观测输出:
2029-06-07
这不是错误消息,也不是用户输入的日期。使用java.time包中的现代日期时间类。切勿使用
日期
、日历
和简化格式
DateTimeParseException的陷阱
将输入字符串解析为LocalDate
对象。输入错误时的DateTimeParseException
陷阱
String input=“2021-99-99”;
试一试{
LocalDate ld=LocalDate.parse(输入);
}捕获(DateTimeParse异常){
…处理错误输入
}
我建议您不要使用SimpleDateFormat
和Date
。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。而是使用LocalDate
和DateTimeFormatter
,两者都来自。是的,DateTimeParseException
也来自同一个API。这是否回答了您的问题。我太冒失了,不推荐你。很抱歉,在其他人关闭您的问题之前,我太慢了,无法作为副本关闭。