Fiz uma funçãozinha para recuperar um conjunto de datas de acordo com o dia da semana, por exemplo: quero todos os dias de hoje até 2014 que sejam Sábado e Domingo. Se alguém precisar, segue o código:
public static List<Date> getDaysByWeekDays(Date dtBegin, Date dtEnd,
int... weekDaysToVerify) {
Calendar calEnd = Calendar.getInstance();
calEnd.setTime(dtEnd);
Calendar actualDay = Calendar.getInstance();
actualDay.setTime(dtBegin);
List<Date> weekDays = new ArrayList<>();
while (actualDay.before(calEnd)) {
for (int weekDay : weekDaysToVerify) {
if (actualDay.get(Calendar.DAY_OF_WEEK) == weekDay) {
weekDays.add(actualDay.getTime());
break;
}
}
actualDay.add(Calendar.DAY_OF_MONTH, 1);
}
return weekDays;
}
Para utilizar é só passar a data inicial, a data final e quais dias da semana você quer considerar:
Calendar calEnd = Calendar.getInstance(); calEnd.set(2014, 0, 1, 0, 0, 0); // 01/01/2014 as 00h00 List<Date> weekDays = getDaysByWeekDays(new Date(), calEnd.getTime(), Calendar.SUNDAY, Calendar.SATURDAY); System.out.println(Arrays.toString(weekDays.toArray()));
Depois vou ver se faço um exemplo desse utilizando a JSR-310, que simplificará um bocado e deixará mais legível esse código.