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.