判断是否连续10天,并返回天数连续的天数

需要注意 这个是不包含周6日的写法 日期list需要转换成 date类型

如果需要包含周6日 删除 259200000 这个块的判断 并后续不去调用findDates 方法即可 

 多说无益直接上代码!

package com.demo;

import cn.hutool.core.date.DateTime;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @Author Ykj
 * @Description
 * @Date 2022/4/14 --14:57
 */
public class calendar15 {
    public static void main(String[] args) throws ParseException {
        List<String> dateList = new ArrayList();
        dateList.add("2022-4-1");
        dateList.add("2022-4-2");
        dateList.add("2022-4-3");
        dateList.add("2022-4-4");
        dateList.add("2022-4-5");
        dateList.add("2022-4-6");
        dateList.add("2022-4-7");
        dateList.add("2022-4-8");
        dateList.add("2022-4-9");
        dateList.add("2022-4-11");
        dateList.add("2022-4-12");
        dateList.add("2022-4-13");
        dateList.add("2022-4-14");
       // dateList.add("2022-4-15");
        dateList.add("2022-4-16");
        dateList.add("2022-4-18");
        dateList.add("2022-4-19");
        dateList.add("2022-4-20");
        dateList.add("2022-4-21");
        dateList.add("2022-4-22");
        dateList.add("2022-4-23");
        dateList.add("2022-4-24");
        dateList.add("2022-4-25");
        dateList.add("2022-4-26");
        dateList.add("2022-4-27");
        dateList.add("2022-4-28");
        dateList.add("2022-4-29");
        dateList.add("2022-5-2");
        dateList.add("2022-5-3");
        //以上 是传入的list 用于测试


        //将传如的list 去除周6日
        List<Date> dates = findDates(dateList);
        Integer count = 0;
        //TODO  需要返回的连续天数 如果不满足10天 返回 0 满足则返回满足的总日期
        Integer returnDays=0;
        //TODO 每10 天加1
        Integer decimalismNumber=0;
        for (int i = 0; i < dates.size(); i++) {
            //第一天的日期不判断直接 +1
            if (i == 0) {
                count++;
            } else {
                //周一 会返回2  周日返回1
                int i1 = DateTime.of(dates.get(i)).dayOfWeek();
                //当日期为周一时 与周5日期差为259200000 count+1 否则count=1重新开始计算
                if (i1 == 2) {
                    if (dates.get(i).getTime() - dates.get(i - 1).getTime() == 259200000) {
                        count = count + 1;
                    } else {
                        count = 1;
                    }
                } else  {
                    //如果不是周一 则与前一天的时间差为86400000 时count +1 否则count=1
                    if (dates.get(i).getTime() - dates.get(i - 1).getTime() == 86400000) {
                    count=count+1;
                    }else {
                        count=1;
                    }
                }
            }
            if (count>10){
                returnDays ++;
            }
            if (count==10){
                decimalismNumber=decimalismNumber+1;
            }
        }
        returnDays=returnDays+decimalismNumber*10;

        System.out.println(count);
        System.out.println(returnDays);
        System.out.println(decimalismNumber);
       /* if (count >=10){
            System.out.println(true);
        }else {
            System.out.println(false);
        }*/
    }

    //此方法用于排除周6日
    public static List<Date> findDates(List<String> a) throws ParseException {
        List lDate = new ArrayList();
        for (String o : a) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = sdf.parse(o);
            int i = DateTime.of(date).dayOfWeek();
            if (i != 1 && i <= 6) {
                lDate.add(date);
            }
        }
        return lDate;
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值