让SimpleDateFormat的parse方法严格解析

simpledateformat的parse默认是弱校验的.

比如说如果你的format为"yyyy-MM-dd" ,输入的字串如果是"2013-08-28"能转化正常.

输入的如果是"2013-13-28"则会生成Date:2014-01-28.也就是顺加.

如果希望把"2013-13-28"当做错误格式.则可以设定setLenient(false);

代码如下

public class DateTest {  
    public static void main(String[] args) throws ParseException {  
        DateFormat format = new SimpleDateFormat("dd/MM/yyyy");  
        format.setLenient(false);  
        Date date = format.parse("33/12/2011");  
        System.out.println(date);  
    }  
} 

输出结果为:

Exception in thread "main" java.text.ParseException: Unparseable date: "33/12/2011"
at java.text.DateFormat.parse(Unknown Source)
at DateTest.main(DateTest.java:11)

若设置

format.setLenient(false);

则输出结果为

Mon Jan 02 00:00:00 CST 2012
setLenient用于设置Calendar是否宽松解析字符串,如果为false,则严格解析;默认为true,宽松解析。

 

 

posted @ 2013-08-28 11:37  苍云古齿  阅读(1774)  评论(1)    收藏  举报