繁体   English   中英

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

[英]How do I check if an input date (month&day) is within the reasonable range?

如何确保输入日期的月份和日期正确? 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块打印异常和错误消息。

观察到 output:

2029-06-07

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

使用java.time package 中的现代日期时间类。 永远不要使用DateCalendarSimpleDateFormat

捕获DateTimeParseException

将您的输入字符串解析为LocalDate object。 在输入错误的情况下捕获DateTimeParseException

String input = "2021-99-99" ; 
try {
    LocalDate ld = LocalDate.parse( input ) ;
} catch ( DateTimeParseException e ) {
    … handle faulty input
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM