Java 如何检查输入日期(月和日)是否在合理范围内?

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

如何确保输入日期的月份和日期正确? 例如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-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。这是否回答了您的问题。我太冒失了,不推荐你。很抱歉,在其他人关闭您的问题之前,我太慢了,无法作为副本关闭。