public static void main(String[] args) throws ParseException {
String s = "2019-09-01";
System.out.println("转换前日期:"+s);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
System.out.println("转换后日期:"+sdf.parse(s));
DateFormat df = new SimpleDateFormat("yyyyMMdd");
System.out.println("再次转回:"+df.format(sdf.parse(s)));
}
结果:
转换前日期:2019-09-01
转换后日期:Sun Dec 09 00:00:00 CST 2018
再次转回:20181209
明显的转换的有问题,
后来查了下API,是由于默认转换是宽松转换引起的,改为严格转换即可
sdf.setLenient(false);
第一次转换就会报错了,如下:
转换前日期:2019-09-01
Exception in thread "main" java.text.ParseException: Unparseable date: "2019-09-01"
at java.text.DateFormat.parse(DateFormat.java:366)
at com.datalook.util.common.DateUtils.main(DateUtils.java:50)