客户那边需要制订大小周的需求,需要自己生产日历,自己网上搜过但没有代码,就自己写了个,可能代码有点冗余多多谅解
客户传入开始时间和结束时间,生产日历
这段代码可以直接用,只需要替换一下开始时间和结束时间换成你自己的
// 返回的日期集合,生成日期
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;
}
}