在论坛看到小伙伴说格式化时间用到了"YYYY-MM-dd"在时间上出现了bug,测试数据如下:
@Test
public void test(){
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date newDate1 = format.parse("2019-12-31 23:59:59");
System.out.println(newDate1); //Tue Dec 31 23:59:59 CST 2019
SimpleDateFormat format2 = new SimpleDateFormat("YYYY-MM-dd hh:mm:ss");
Date newDate2 = format2.parse("2019-12-31 23:59:59");
System.out.println(newDate2); //Sun Dec 30 23:59:59 CST 2018
SimpleDateFormat format3 = new SimpleDateFormat("YYYY-MM-DD hh:mm:ss");
Date newDate3 = format3.parse("2020-01-01 23:59:59");
System.out.println(newDate3); //Sun Dec 29 23:59:59 CST 2019
}catch (ParseException e) {
e.printStackTrace();
}
}
细心的同学应该发现了 2019-12-31 23:59:59用 YYYY-MM-dd hh:mm:ss,此刻变成了2018-12-30 23:59:59,
从上述可以看出来使用"YYYY-MM-DD"格式化时间出现了错误!
问题原因出在哪里?
YYYY 表示:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。
开发时候还是选用yyyy-MM-dd 来做日期格式化