关于JAVA使用Calendar操作自然周的工具类

关于JAVA使用Calendar操作自然周的工具类

这个工具类中目前有三个关于自然周的方法。
方法一:通过输入当前时间计算当前时间是本年度第几个自然周
 /**
     * @author qisw
     * @date 2019-12-06 17:03
     * @return
     * @throws 
     * @desc   根据传入的date时间类型  得出该时间是所属年度的第几个自然周
    */
    public static int getWeekofyearByDatestr(Date date){
        Calendar calendar = Calendar.getInstance();
        calendar.setFirstDayOfWeek(Calendar.MONDAY);
        calendar.setTime(date);
        return calendar.get(Calendar.WEEK_OF_YEAR);
    }
方法二:通过传入需要查询的年份和需要查询的第几个自然周 获得该自然周开始的日期 以周一为自然周的开始
 /**
     * @author qisw
     * @date 2019-12-06 17:32
     * @return
     * @throws 
     * @desc 通过传入的year  和  自然周的数  得出该自然周的开始日期
     * @desc  如: 传入  year=2019  weekNo=2 得出 2019-01-07
    */
    public static String getStartDayOfWeekNo(int year,int weekNo){
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.WEEK_OF_YEAR, weekNo);
        int _year = cal.get(Calendar.YEAR);
        int _month = cal.get(Calendar.MONTH ) +1;
        int _day = cal.get(Calendar.DAY_OF_MONTH);

        String year_str = _year + "";
        String month_str = _month + "";
        String day_str = _day + "";

        //如果得出来的年小于year 说明当年第一天不是第一个自然周的周一
        // 直接返回 当前年的第一天  如 2019-01-01
        if(_year < year){
            return year +"-01-01";
        }

        //如果月份小于10   需要补充0  如 -08
        if(_month < 10){
            month_str = "0" + month_str;
        }

        //如果日期小于10  需要补充0  如 -01
        if(_day < 10){
            day_str = "0" + day_str;
        }

        return year_str + "-" + month_str + "-" + day_str;
    }
方法三:通过传入需要查询的年份和需要查询的第几个自然周 获得该自然周结束的日期 以周一为自然周的开始
 /**
     * @author qisw
     * @date 2019-12-06 17:48
     * @return
     * @throws 
     * @desc @desc 通过传入的year  和  自然周的数  得出该自然周的结束日期
     *      * @desc  如: 传入  year=2019  weekNo=2 得出 2019-01-13
    */
    public static String getEndDayOfWeekNo(int year,int weekNo){
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        cal.set(Calendar.WEEK_OF_YEAR, weekNo);
        cal.add(Calendar.DAY_OF_WEEK, 6);

        int _year = cal.get(Calendar.YEAR);
        int _month = cal.get(Calendar.MONTH ) +1;
        int _day = cal.get(Calendar.DAY_OF_MONTH);

        String year_str = _year + "";
        String month_str = _month + "";
        String day_str = _day + "";

        //如果得出来的年大于year 说明当年最后一个自然周的周日不是当年
        // 直接返回 当前年的最后一天  如 2019-12-31
        if(_year > year){
            return year +"-12-31";
        }

        //如果月份小于10   需要补充0  如 -08
        if(_month < 10){
            month_str = "0" + month_str;
        }

        //如果日期小于10  需要补充0  如 -01
        if(_day < 10){
            day_str = "0" + day_str;
        }

        return year_str + "-" + month_str + "-" + day_str;
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值