点击查看代码
package com.bh.bugs;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Test2 {
    public static void main(String[] args) {
        System.out.println("start=========");
        // Date
        Calendar cal = Calendar.getInstance();
        // Calendar类中, 设置月份的话, 1月:0, 12月: 11, 也就是0-11代表了 1到12月
//        cal.set(2021,12,31);
        cal.set(2021,11,31);
//        System.out.println(cal.getTime());
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSSS");
        // 注意: 大写的Y 和小写的y 不是一个意思,一定要查看API
        SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss:SSSS");
        String strTime = sdf.format(cal.getTime());
        // 结果不是2021,而是2022了,产生了bug
        // 大写Y和小写y的意思完全不通
        System.out.println(strTime);
        // 大写的Y ==》 week yaer
        // 什么是week year
        // 在国际标准中, week year是说某一周, 只能属于一个年份
        // 2021/12/31日 不能既属于今年的最后的一周,又是明年的第一周
        // 对于wekk year来说,一下四种是等效的。
        // 1, 本年度第一个星期四所在的星期
        // 2, 1月4日所在的星期
        // 3, 本年度第一个至少有4天在同一星期内的星期
        // 4, 星期一在余年12月29日至今年1月4日以内的星期
        System.out.println("end  =========");
    }
}