发现网上大部分都是一天一天加、可能影响效率、写了一个一周一周来加
/**
* 获取时间范围内每个周一和周末
* 第一天不一定是周一 、最后一天不一定是周日
* @param dBegin
* @param dEnd
* @return
*/
public static List<String> findDatesOfWeek(Date dBegin, Date dEnd) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
List<String> lDate = new ArrayList<>();
lDate.add(simpleDateFormat.format(dBegin));
Calendar calBegin = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calBegin.setTime(dBegin);
Calendar calEnd = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calEnd.setTime(dEnd);
// 测试此日期是否在指定日期之后
while (dEnd.after(calBegin.getTime())){
//日期星期日提出来
if (calBegin.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){
Date date = calBegin.getTime();
lDate.add(simpleDateFormat.format(date));
// 根据日历的规则,为给定的日历字段添加或减去指定的时间量
calBegin.add(Calendar.DAY_OF_MONTH, 1);
Date endDate = calBegin.getTime();
lDate.add(simpleDateFormat.format(endDate));
calBegin.add(Calendar.DAY_OF_MONTH, 6);
}else {
calBegin.add(Calendar.DAY_OF_MONTH, 1);
}
}
lDate.add(simpleDateFormat.format(dEnd));
return lDate;
}