为了账号安全,请及时绑定邮箱和手机立即绑定

日期年份值在无效时显示有效

日期年份值在无效时显示有效

千万里不及你 2021-07-08 22:01:48
我正在开发一个日期应用程序,用户将在其中输入日期并且我正在验证该日期。日期格式为dd/MM/yyyy. 这是我的代码import java.util.*;import java.text.SimpleDateFormat;import java.text.ParseException;public class HelloWorld {  public static void main(String[] args) { //Scanner sc = new Scanner(System.in);  String dat = "02/1/2018";  try {             SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");                df.setLenient(false);                df.parse(dat);                System.out.print("valid");            } catch (ParseException e) {                System.out.print("invalid");            }   } }这工作完美并验证了我的日期,但是当我像22/02/2-19这样输入我的日期时也有效。但它应该是无效的,因为我的年份是2-19.
查看完整描述

3 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

时间

Basil Bourque 的出色回答已经为您的问题提供了最佳解决方案。我不重复。如果使用该答案,您希望在第一个示例中接受 1 位数字月份02/1/2018,则您应该M在格式模式字符串中只提供一个。然后这两个101将被接受。同样,一个人d将同时接受202月份的某一天。

你的代码出了什么问题

SimpleDateFormat从您的字符串中读取尽可能多的内容以匹配格式模式,但很高兴不阅读所有内容。对于您的第二个示例,22/02/2-19它解析22/02/2Date2016 年多年前的 Mon Jan 02 00:00:00 CET 2(确切结果取决于您的时区)。由于这是一个有效日期,因此不会引发任何异常。然后它会忽略字符串的最后三个字符。


查看完整回答
反对 回复 2021-07-14
  • 3 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信