如何在解析不正确的String to Date时获得异常或任何类型的反馈

时间:2015-04-15 06:27:00

标签: java date simpledateformat

我想将String解析为Date。问题是,如果我解析错误的日期,如"2009-02-40",我没有得到任何异常(没有反馈,我通过了错误的日期)而是我将Date对象设置为"2009-01-01"。< / p>

 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
        try {
            Date result =  df.parse("2009-02-40");
            System.out.println(result);
        } catch (ParseException e) {
            e.printStackTrace();
        }  

当我像上面这样传递错误的Date时,如何获得异常?

3 个答案:

答案 0 :(得分:1)

你想在你的编队上打电话给setLenient(false)。解析发生时会导致“严格”检查。默认情况下,“lenient”是“true;然后使用一些启发式方法将”垃圾进入“转化为任何东西。

可能不是世界上最好的设计;但这就是它的工作原理。

答案 1 :(得分:1)

请尝试以下代码:

 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
         df.setLenient(false); //note the change here
            try {
                Date result =  df.parse("2009-02-40");
                System.out.println(result);
            } catch (ParseException e) {
                e.printStackTrace();
            }  

答案 2 :(得分:0)

df.parse(&#34; 2009-02-40&#34);如果无法解析指定字符串的开头,则抛出ParseException。

要进行严格的解析,请使用 df.setLenient(false);