需要注意 这个是不包含周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;
}
}