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)