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,宽松解析。