[英]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 中的现代日期时间类。 永远不要使用Date
、 Calendar
和SimpleDateFormat
。
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.