我试图阻止输入中不兼容的日期。因此,我故意将错误的日期指定为字符串。我将calendar.setLenient
设置为false
,希望它不允许日期解析。但是它通过了它。下面是我的代码:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test {
public static void main(String[] args) throws Exception{
try {
String from ="2018-15-18";
String to = "2018-15-18";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calender1 = Calendar.getInstance();
Calendar calender2 = Calendar.getInstance();
calender1.setLenient(false);
calender2.setLenient(false);
calender1.setTime(sdf.parse(from));
calender2.setTime(sdf.parse(to));
Date dtFrom = calender1.getTime();
Date dtTo = calender2.getTime();
System.out.println(sdf.format(dtFrom));
if((from!=null && !from.isEmpty())&&(to!=null && !to.isEmpty())&&(dtFrom!=null && dtTo!=null))
System.out.println("ok");
else
System.out.println("not ok");
}catch(Exception ex) {
ex.printStackTrace();
}
}
}
由于我输入了错误的日期,即不存在15个月。因此,我期待在行calender1.setTime(sdf.parse(from));
上出现异常,但它会通过并将日期值打印为:2019-03-18
。我不想那样。为什么会这样呢?一旦无法解析,如何确定我的代码中不应再输入错误的日期输入。