Recuperar datas dependendo do dia da semana em Java

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.

Sobre: Thiago Galbiatti Vespa

Thiago Galbiatti Vespa é mestre em Ciências da Computação e Matemática Computacional pela USP e bacharel em Ciências da Computação pela UNESP. Coordenador de projetos do JavaNoroeste, membro do JCP (Java Community Process), consultor Oracle, arquiteto de software de empresas de médio e grande porte, palestrante de vários eventos e colaborador de projetos open source. Possui as certificações: Oracle Certified Master, Java EE 5 Enterprise Architect – Step 1, 2 and 3; Oracle WebCenter Portal 11g Certified Implementation Specialist; Oracle Service Oriented Architecture Infrastructure Implementation Certified Expert; Oracle Certified Professional, Java EE 5 Web Services Developer; Oracle Certified Expert, NetBeans Integrated Development Environment 6.1 Programmer; Oracle Certified Professional, Java Programmer; Oracle Certified Associate, Java SE 5/SE 6