java 计算大小周,根据时间段生成日期

客户那边需要制订大小周的需求,需要自己生产日历,自己网上搜过但没有代码,就自己写了个,可能代码有点冗余多多谅解

客户传入开始时间和结束时间,生产日历

这段代码可以直接用,只需要替换一下开始时间和结束时间换成你自己的

  // 返回的日期集合,生成日期
            List days = new ArrayList<>();
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            try {
                Date start = dateFormat.parse(hwqCheckGroup.getStartTime());
                Date end = dateFormat.parse(hwqCheckGroup.getEndTime());

                Calendar tempStart = Calendar.getInstance();
                tempStart.setTime(start);

                Calendar tempEnd = Calendar.getInstance();
                tempEnd.setTime(end);
                tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束)
                while (tempStart.before(tempEnd)) {
                    days.add(dateFormat.format(tempStart.getTime()));
                    tempStart.add(Calendar.DAY_OF_YEAR, 1);
                }
            } catch (ParseException e) {
                e.printStackTrace();
            }

获取休息日的日期

 ArrayList<Object> weekTime = new ArrayList<>();
                //首先需要拿到第一周的数据
                int q=5;
                //获取第一周的数据
                weekTime.add(days.get(q-1));
                //q的值会随着循环变化
                //每个循环只走一次 所以会有多个break
                for (int i=0;i<=q;i++){
                    for ( q=q+8;q<=q+8;){
                        //获取小周
                        //当q大于等于传入的大小时需要结束循环
                        if (q>=days.size()){
                            break;
                        }
                        weekTime.add(days.get(q));
                        for ( q=q+6;q<=q+6;){
                            //获取大周
                            if (q>=days.size()){
                                break;
                            }
                            weekTime.add(days.get(q));
                            //q+1获取的是周末的值
                            weekTime.add(days.get(q+1));
//                    if (q>days.size()){
                            break;
//                    }
                        }
                        break;
                    }
                    if (q>=days.size()){
                        break;
                    }
                }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值