在使用jdk自己提供的DateFormat类时,如果不指定年,那么解析2月29日会出错。会认为这是一个非法的日期。具体见代码:
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatTest {
public static void main(String[] args){
DateFormat dateformat = new SimpleDateFormat("MMddHHmmss");
try {
dateformat.setLenient(false);
Date date = dateformat.parse("0229084700");
System.out.println(date.toString());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
执行时会报错,报错信息如下:
java.text.ParseException: Unparseable date: "0229084700"
at java.text.DateFormat.parse(Unknown Source)
at DateFormatTest.main(DateFormatTest.java:11)
使用apache的commons的
DateUtils类,它的处理稍微特殊,如果不指定年,0229则会解析为1970年的3月1日,不会报错,但同样是有问题的,使用到此类的话,需注意此情况。