Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果java日期是invaild日期,如何使其不自动转换_Java_Date_Jsp_Calendar_Java 7 - Fatal编程技术网

如果java日期是invaild日期,如何使其不自动转换

如果java日期是invaild日期,如何使其不自动转换,java,date,jsp,calendar,java-7,Java,Date,Jsp,Calendar,Java 7,我正在使用一个旧的Java7环境,我的工作仍然在使用它,我需要验证用户日期。问题是,如果用户输入了无效的日期,我需要返回一个错误,因此我尝试使用java calendar对象实现。但是,现在如果用户键入日期2001-02-31,java date对象会将日期转换为2001-03-02,从而使日历不会向用户抛出异常,因为转换的日期是有效的。我想知道如何才能避开被自动转换的日期,使其永远不会被转换 以下是我目前的代码: //formats the date for us SimpleDateForm

我正在使用一个旧的Java7环境,我的工作仍然在使用它,我需要验证用户日期。问题是,如果用户输入了无效的日期,我需要返回一个错误,因此我尝试使用java calendar对象实现。但是,现在如果用户键入日期2001-02-31,java date对象会将日期转换为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");
}
//为我们设置日期格式
SimpleDataFormat dateFormatter=新SimpleDataFormat(“yyyy-MM-dd”);
java.util.Date checkLDate=dateFormatter.parse(request.getParameter(“loDate”);
打印(选中日期+“
”); //检查日期是否有效 Calendar cal=Calendar.getInstance(); cal.setLenient(假); 校准设定时间(检查日期); 试一试{ cal.getTime(); //此打印只是为了调试代码的去向 打印出来(“你好”); } 捕获(例外e){ 打印(“无效日期”); }

希望这对您有所帮助,并感谢您提前提供的所有帮助

您必须将对象上的“宽大”设置为“假”:


日历中
已经很晚了。

好,我切换到这个,然后对日期的解析失败,所以我在try-catch中抛出了它,它抛出了错误消息。谢谢你的帮助help@LucyEly您欢迎java 7考虑抛弃长期过时的、臭名昭著的麻烦代码< SimpleDateFormat >代码>和朋友,并添加到您的项目中,以便使用<代码> java java。时间< /> >,即现代Java日期和时间API。和你一起工作真是太好了。你链接的问题有21个答案。看起来你选择了第一个,但是那一个是不正确的,正如下面的评论中所说的。IMO是最好的。它将为您提供最佳和最严格的验证。您在下面接受的答案已在您链接的问题下给出了三次。我已经结束了这个问题,作为重复。
dateFormatter.setLenient(false)