在java中我们时常会使用到日期格式化,例如“YYYY-MM-dd”、“yyyy-MM-dd”
今天我们来看一下大写Y与小写y有什么不同。
先总结:尽量使用小写y来表示年份。
我们直接来看代码
1.将日期设置成2023年12月31日,并且分别使用大写Y和小写y进行格式化打印;
2.结果
我们惊讶的发现,同一天打印出来的结果竟然不一致。
中间整整跨越了一年。
原因:
“YYYY”表示的是Week year,就是这天所在的周所属的年。而每年的第一周是怎么定义的呢。
ISO 8601中给出了定义:本年第一个周四所在的那一个星期。
按照日历我们可以发现,2024年的第一个周四是一月四号,而一周的第一天是周日,2023年的12月
31日刚好是2024年的第一周的周日。所以YYYY将2023年12月31日算在了2024年;
小写yyyy表示的就是年份。
所以在日常代码中我们使用小写y来格式化。以防止发生bug。