YYYY-MM-dd格式熟悉?
今早看了一点文章,关于时间格式化的问题,我们在开发的过程中经常需要将日期进行格式化,常见的形式是 2020-12-31这种格式的
SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
但是有人不小心写成这样了
System.out.println("YYYY-MM-dd = " + df1.format(c.getTime()));
这么写会出现什么问题呢?
SimpleDateFormat df1 = new SimpleDateFormat("YYYY-MM-dd");
SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
// 2020年12月26日周六
c.set(Calendar.DATE, 26);
System.out.println("YYYY-MM-dd = " + df1.format(c.getTime()));
System.out.println("yyyy-MM-dd = " + df2.format(c.getTime()));
输出结果为
这么看没有什么异常,如果日期变成 2020-12-27号的日期呢?
c.set(Calendar.DATE, 27);
System.out.println("YYYY-MM-dd = " + df1.format(c.getTime()));
System.out.println("yyyy-MM-dd = " + df2.format(c.getTime()));
输出结果是
查看了这篇文章说的原因是因为-
https://juejin.cn/post/6911874152953708558
因为YYYY是week-based-year,表示:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。
所以2020年12月27日那天在这种表述方式下就已经到 2021 年了。