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

时间:2021-02-20 03:12:57

标签: java date validation

如何确保输入的日期具有正确的月份和日期? ex 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

这不是错误消息,也不是用户输入的日期。

1 个答案:

答案 0 :(得分:2)

使用 java.time 包中的现代日期时间类。切勿使用 CalendarSimpleDateFormatDateTimeParseException

LocalDate 的陷阱

将您的输入字符串解析为 DateTimeParseException 对象。错误输入时的 String input = "2021-99-99" ; try { LocalDate ld = LocalDate.parse( input ) ; } catch ( DateTimeParseException e ) { … handle faulty input } 陷阱。

{{1}}