如果 java 日期无效,我如何不自动转换
how do I have a java date not automatically convert if its an invaild date
我正在使用我的工作仍在使用的旧 java 7 环境,我需要验证用户日期。问题是,如果用户输入无效日期,我需要 return 一个错误,所以我正在尝试使用 java 日历对象实现 this answer,尽管现在如果用户输入日期 2001 -02-31 java 日期对象将日期转换为 2001-03-02 从而使日历永远不会向用户抛出异常,因为转换后的日期是有效的。我想知道如何绕过自动转换的日期,以便它永远不会转换?
到目前为止,这是我的代码:
//formats the date for us
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date checkLDate = dateFormatter.parse(request.getParameter("loDate"));
out.print(checkLDate + "<br/>");
//checking to see if the dates are valid
Calendar cal = Calendar.getInstance();
cal.setLenient(false);
cal.setTime(checkLDate);
try {
cal.getTime();
//this print is just to debug where the code went
out.print("hello");
}
catch (Exception e) {
out.print("Invalid date");
}
希望这对您有所帮助,感谢您提前提供的所有帮助
您必须在 SimpleDateFormat 对象上将 lenient 设置为 false:
dateFormatter.setLenient(false)
在Calendar
已经晚了。
我正在使用我的工作仍在使用的旧 java 7 环境,我需要验证用户日期。问题是,如果用户输入无效日期,我需要 return 一个错误,所以我正在尝试使用 java 日历对象实现 this answer,尽管现在如果用户输入日期 2001 -02-31 java 日期对象将日期转换为 2001-03-02 从而使日历永远不会向用户抛出异常,因为转换后的日期是有效的。我想知道如何绕过自动转换的日期,以便它永远不会转换?
到目前为止,这是我的代码:
//formats the date for us
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date checkLDate = dateFormatter.parse(request.getParameter("loDate"));
out.print(checkLDate + "<br/>");
//checking to see if the dates are valid
Calendar cal = Calendar.getInstance();
cal.setLenient(false);
cal.setTime(checkLDate);
try {
cal.getTime();
//this print is just to debug where the code went
out.print("hello");
}
catch (Exception e) {
out.print("Invalid date");
}
希望这对您有所帮助,感谢您提前提供的所有帮助
您必须在 SimpleDateFormat 对象上将 lenient 设置为 false:
dateFormatter.setLenient(false)
在Calendar
已经晚了。