yyyy-MM-dd HH:mm:ss和YYYY-MM-dd HH:mm:ss踩坑之路
突然不经意的一瞥,发现了一个问题:今天明明才2020年刚开始,可是为什么有2020年12月31号的单号产生了。心中一种莫名的僵硬,要出事了。出现这种情况,首先怀疑的是时间格式化问题。发现了YYYY这个东西。
赶紧写段代码验证一下,是不是YYYY的问题。
Calendar calendar = Calendar.getInstance(); calendar.set(2019, Calendar.NOVEMBER, 30); try { Date date = calendar.getTime(); SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(format1.format(date)); SimpleDateFormat format2 = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"); System.out.println(format2.format(date)); } catch (Exception e) { e.printStackTrace(); }// 结果:
// 2019-11-30 16:01:05
// 2019-11-30 16:01:05
通过上面代码发现没问题啊。既然有这种写法,说明yyyy和YYYY肯定是有区别的。果不其然,找到了原因
y:正常的年
Y:如果本周跨年,那么这一周就算入下一年
修改一下代码:
Calendar calendar = Calendar.getInstance(); calendar.set(2019, Calendar.DECEMBER, 30); try { Date date = calendar.getTime(); SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(format1.format(date)); SimpleDateFormat format2 = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"); System.out.println(format2.format(date)); } catch (Exception e) { e.printStackTrace(); }// 结果:
// 2019-12-30 16:10:54
// 2020-12-30 16:10:54
验证了结果