java计算两个日期间的工作日

public int calLeaveDays(Date startTime, Date endTime){
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        int leaveDays = 0;
        Date flag = startTime;//设置循环开始日期
        Calendar cal = Calendar.getInstance();

        while(flag.compareTo(endTime)!=1){
            cal.setTime(flag);
            int week = cal.get(Calendar.DAY_OF_WEEK) - 1;
            String ff =  format.format(cal.getTime());
            if(week == 0 || week == 6){
                //为周六日的工作日
                int gzr = zysxMapper.getHoliday(ff,0);
                if(gzr > 0){
                    leaveDays = leaveDays + 1;
                    cal.add(Calendar.DAY_OF_MONTH, +1);
                    flag = cal.getTime();
                    continue;
                }else{
                    //跳出循环进入下一个日期
                    cal.add(Calendar.DAY_OF_MONTH, +1);
                    flag = cal.getTime();
                    continue;
                }

            }
            try{
                int count = zysxMapper.getHoliday(ff,1);
                if (count > 0){
                    cal.add(Calendar.DAY_OF_MONTH, +1);
                    flag = cal.getTime();
                    continue;
                }
            }catch (Exception e){
                e.printStackTrace();
            }
            //不是节假日或者周末,天数+1
            leaveDays = leaveDays + 1;
            //日期往后加一天
            cal.add(Calendar.DAY_OF_MONTH, +1);
            flag = cal.getTime();
        }
        return leaveDays;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值