在掘金社区看到有人说这个问题,网上查了一下真有人遇到过这个问题,这里来简单说下。
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小强
未曾清贫难成人,不经打击老天真。
自古英雄出炼狱,从来富贵入凡尘。
发表评论: