yyyy-MM-dd和YYYY-MM-dd区别

在通常时间下,yyyy-MM-dd和YYYY-MM-dd两种格式化日期的方式得到的日期都是一样的,没有区别。只有在每年的年底最后一周的时候可能会发生意想不到的问题。

原因是YYYY表示的是week-based-year,即使用当天所在的周属于的年份。一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年

举个例子:2020-12-27到2020-12-31号这段时间内,使用小写的yyyy得到的年份是正常的2020年,而使用大写的YYYY得到的年份是2021年。

实验测试代码:

public class Test {

    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sdf2 = new SimpleDateFormat("YYYY-MM-dd");

        //当年最后一周前一天(周六)
        System.out.println(sdf1.format(getDate("2020-12-26")));
        System.out.println(sdf2.format(getDate("2020-12-26")));
        System.out.println();
        //当年最后一周第一天(周日为第一天)
        System.out.println(sdf1.format(getDate("2020-12-27")));
        System.out.println(sdf2.format(getDate("2020-12-27")));
        System.out.println();
        //当年最后一天
        System.out.println(sdf1.format(getDate("2020-12-31")));
        System.out.println(sdf2.format(getDate("2020-12-31")));
        System.out.println();
    }

    private static Date getDate(String str) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        return sdf.parse(str);
    }

}

结果:

2020-12-26
2020-12-26

2020-12-27
2021-12-27

2020-12-31
2021-12-31

觉得内容还不错?打赏个钢镚鼓励鼓励!!👍