【发布时间】:2020-08-21 16:41:57
【问题描述】:
我在下面的代码中犯了什么错误?如果我们不传递像 yyyy-MM-dd 这样的日期格式,它应该抛出解析错误并且它应该返回 false,但在一种情况下不起作用
- 2020-08-19-->这工作正常并返回 true
- 2020-19-08-->这工作正常并返回 false
- 20-08-19-->这应该返回 false。它不工作并返回 true
我不明白为什么第三个场景会失败。
澄清:我在问:如果我们通过输入:20-19-08,它应该返回 false,对吗?但它回归真实。我的问题是,如果我通过 20 而不是 2020,它应该返回 false。
代码
public static boolean validateDateFormat(String strDate) {
SimpleDateFormat sdfrmt = new SimpleDateFormat("yyyy-MM-dd");
sdfrmt.setLenient(false);
try {
sdfrmt.parse(strDate);
}
catch (ParseException e) {
return false;
}
return true;
}
【问题讨论】:
-
解析后打印日期,看看是什么。
-
我建议你不要使用
SimpleDateFormat。这个类是出了名的麻烦和过时。而是使用来自java.time, the modern Java date and time API 的LocalDate和DateTimeFormatter。 -
嗨阿布希拉姆。我想知道我是否可以麻烦您不要在您的问题中添加乞求信息? Stack Overflow 旨在成为未来开发人员的有用问答资源,因此首选技术写作风格。无论如何,恳求通常对志愿者不起作用 - 如果可以的话,请保持中立的语气。
标签: java validation simpledateformat date-parsing