我使用此方法检查用户输入的日期是否有效:
private boolean isThisDateValid(Date dateToValidate) {
Calendar cal = Calendar.getInstance();
if (dateToValidate == null) {
return false;
}
cal.setLenient(false);
cal.setTime(dateToValidate);
try {
cal.getTime();
} catch (Exception e) {
return false;
}
return true;
}
问题是,当用户写错了年份(大年)时,它不会抛出异常示例: 12/09/2016666
我应该以单独的方法检查年份字段的完整性。
答案 0 :(得分:1)
即使距离现在还很远,2016666仍然是有效年份。从现在开始大约有200万年了,所以我可以看到为什么你可能不会在很多情况下想要它,但是对于日期验证器来说这不是一个合法的日期会很奇怪。这确实是一种不正确的行为。
如果你想进行额外的验证(例如确保年份字段不超过当前年份),你需要自己做,并抛出适当的例外。