时间问题

点击查看代码
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  =========");
    }
}

posted @ 2023-07-18 14:08  liangkuan  阅读(17)  评论(0)    收藏  举报