最近很多人说格式化时间用到了"YYYY-MM-dd"基本上都给测试提了BUG
下面就记录一下吧:
JDK测试版本为1.8
public static void main(String[] args) { 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); SimpleDateFormat format2 = new SimpleDateFormat("YYYY-MM-dd hh:mm:ss"); Date newDate2 = format2.parse("2019-12-31 23:59:59"); System.out.println(newDate2); SimpleDateFormat format3 = new SimpleDateFormat("YYYY-MM-DD hh:mm:ss"); Date newDate3 = format3.parse("2020-01-01 23:59:59"); System.out.println(newDate3); } catch (ParseException e) { e.printStackTrace(); } }
执行结果:
Tue Dec 31 23:59:59 CST 2019 Sun Dec 30 23:59:59 CST 2018 Sun Dec 29 23:59:59 CST 2019
从上述可以看出来使用"YYYY-MM-DD"格式化时间出现了错误!
问题原因出在哪里?
YYYY 是 week-based-year,现在就已经 2020 年了,yyyy 还是 2019 年!
YYYY 表示:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。
所以最后开发中还是用yyyy-MM-dd来做日期格式化,其它的就不要用了!呜呜~~~