Java 将两个日期的时间段按照一定天数进行周期切割

Java 将两个日期的时间段按照一定天数进行周期切割

    public  static List<CycleTimeVo> getCycleList(int cycleNum,String startTime,String endTime) throws ParseException {
        System.out.println("统计的时间段为:从"+startTime+"到"+endTime);
        Date endParse = new SimpleDateFormat("yyyy-MM-dd").parse(endTime);
        Long endLong = endParse.getTime();
 
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");//这个是你要转成后的时间的格式
        endTime = sdf.format(new Date(endLong));
        System.out.println("结束时间是:"+endTime);
 
        int daysBetweenNum = daysBetween(startTime, endTime);
        int cycleForNum = daysBetweenNum % cycleNum == 0 ? (daysBetweenNum / cycleNum) : (daysBetweenNum / cycleNum) + 1;
        System.out.println("两日期间相隔的天数为:" + daysBetweenNum);
        System.out.println("周期选择是:" + cycleNum + "天一周期, 则切割出来的周期存在个数:" + cycleForNum);
        Date startParse = new SimpleDateFormat("yyyy-MM-dd").parse(startTime);
        Long startLong = startParse.getTime();
 
        Long calculationLong = startLong;
 
        List<CycleTimeVo> CycleTimeList=new ArrayList();
        for (int i = 1; i <= cycleForNum; i++) {
 
            String startStr = sdf.format(new Date(calculationLong));
            Date startStrParse = new SimpleDateFormat("yyyy-MM-dd").parse(startStr);
            Long startStrLong = startStrParse.getTime();
            Long cycleLong = cycleNum*86400000l;
            calculationLong = startStrLong + cycleLong;
            String endStr = endTime;
            if (calculationLong <= endLong) {
                endStr = sdf.format(new Date(calculationLong));
            }
            System.out.println("起始:" + startStr + "结束:" + endStr);
            CycleTimeVo cycleTimeVo=new CycleTimeVo();
            cycleTimeVo.setStartTimeStr(startStr);
            cycleTimeVo.setEndTimeStr(endStr);
            CycleTimeList.add(cycleTimeVo);
        }
        System.out.println("周期list:"+CycleTimeList.toString());
        return CycleTimeList;
    }
 
    public static int daysBetween(String smdate, String bdate) throws ParseException {
 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance();
        cal.setTime(sdf.parse(smdate));
        long time1 = cal.getTimeInMillis();
        cal.setTime(sdf.parse(bdate));
        long time2 = cal.getTimeInMillis();
        long between_days = (time2 - time1) / (1000 * 3600 * 24);
        return Integer.parseInt(String.valueOf(between_days));
 
    }

测试结果:

getCycleList(7,"2020-02-01","2020-02-14");

结果:
在这里插入图片描述
转发链接:https://blog.csdn.net/qq_35387940/article/details/104357864

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值