SimpleDateFormat年份转换问题
1. 问题说明
有些人在写日期转换的时候,不区分 yyyy-MM-dd
和 YYYY-MM-DD
,但是两者的转换结果每年底都不同,会造成年份多加1的问题。
2. 问题演示
设置一个 2021年12月26日
的Calendar,然后转Date,再用SimpleDateFormat进行日期文本化。
结果一个是 2021年12月26日
, 一个是 2022年12月26
日。
3. 问题分析
YYYY
的转换策略是 years based weeks
, 只要被转换日期所在的周跨年了,那么本周内的每一天,都算是下一年。
也就是说用 YYYY
进行日期的文本化,每年底跨年的周,都会产生年份 + 1的问题。