为什么calendar.setLenient(false)不生成异常

时间:2018-11-27 07:05:10

标签: java

我试图阻止输入中不兼容的日期。因此,我故意将错误的日期指定为字符串。我将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。我不想那样。为什么会这样呢?一旦无法解析,如何确定我的代码中不应再输入错误的日期输入。

0 个答案:

没有答案