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:
[sourcecode language=”java”]
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;
}[/sourcecode]
Para utilizar é só passar a data inicial, a data final e quais dias da semana você quer considerar:
[sourcecode language=”java”] 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()));[/sourcecode]
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.