在掘金社区看到有人说这个问题,网上查了一下真有人遇到过这个问题,这里来简单说下。
date格式为“YYYY-MM-dd”表示的是周年,date格式为“yyyy-MM-dd”表示的是年。
看如下代码
@Test public void test2() { DateFormat lFormat = new SimpleDateFormat("yyyy-MM-dd"); DateFormat uFormat = new SimpleDateFormat("YYYY-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.set(2021, Calendar.DECEMBER, 28); // 打印 2021-12-28 System.out.println(lFormat.format(calendar.getTime())); // 打印 2022-12-28 System.out.println(uFormat.format(calendar.getTime())); }
直接看下SimpleDateFormat的代码,其文档中确实提到了有大写Y的说法
简单来说就是
y:year-of-era;正常的我们理解的年,即元旦过后。
Y:week-based-year;只要本周跨年,那么这周就算入下一年。
像上面使用的SimpleDateFormat之前也提过(Java之SimpleDateFormat),是可能有线程安全问题的,所以我们简单对于时间的操作,采用Java.time包。
END
Java小强
未曾清贫难成人,不经打击老天真。
自古英雄出炼狱,从来富贵入凡尘。
发表评论: