Criar tantos objetos em relação a diferença entre datas [RESOLVIDO]

Olá pessoal,

 estou com uma dúvida e não sei como fazer pra resolver :S

eu tenho duas datas - inicial e final

agora eu tenho que criar objetos com essas datas. Exemplo:

Data inicial - 10/04/2011 Data final - 10/05/2011
Agora crio um objeto com a primeira data, daih outro objeto a sequencia da data 11/04/2011, daih outro objeto com 12/04/2011… assim por diante até a data final(10/05/2011)

Ou seja eu tenho percorrer a data até a data final, criando um novo objeto a cada data e colocando a nova data no objeto, é claro.
Eu poderia transformar a data em string e ir adicionando mais um, e converter novamente pra data, o problema é se o mês tem 30 ou 31…não sei como saber isso

e talvez isso seria muita gambiarra haha

Se alguém souber como me ajudar?
Abrigado a a todos.

Só uma curiosidade pra que isso? é um exercício, desafio de facul?

Não, na verdade é pra trabalho mesmo estou estagiando comecei a trabalhar com JSF e tenho uma página, onde o usuário coloca data final e inicial

e a partir desta data eu gero uma tabela, sendo como a coluna a seqüencia dos dias, iniciando pela data incial até a final hehe

Segue como eu fiz.

DateUtils.java

[code]
public static final long DAY = 24L * 60L * 60L * 1000L;
public static final long HOUR = 60L * 60L * 1000L;
public static final long MINUTES = 1000L * 60L;
public static final long SECONDS = 1000L;
public static final String TIMEZONE_BR = “America/Sao_Paulo”;
private static final Locale BR = new Locale(“pt”, “BR”);
/**
* Retorna o primeiro dia do mes a partir de uma data.
/
public static Date getPrimeiroDiaDoAno(Date date) {
GregorianCalendar gc = getDateCalendar(date);
gc.set(Calendar.MONTH, 0);
gc.set(Calendar.DAY_OF_MONTH, 1);
return gc.getTime();
}
public static Date getDataAtual2() {
/

* Pega a diferença do fuso horário do cliente com relação ao fuso de
* Brasília Esse número está cadastrado no banco.
*/
Integer fuso = new Integer(0);

	// TimeZone.setDefault(TimeZone.getTimeZone("GMT-3:00"));
	GregorianCalendar gc = (GregorianCalendar) GregorianCalendar
			.getInstance();
	if (!new Integer(0).equals(fuso))
		gc
				.setTimeInMillis(gc.getTimeInMillis()
						- (fuso.longValue() * HOUR));
	return gc.getTime();
}
public static String convertBrDate(Date date) {
	return convertDate("dd/MM/yyyy", date);
}
public static String convertDate(String format, Date dtConsulta) {
	try {
		SimpleDateFormat formatter = new SimpleDateFormat(format,
				new Locale("pt", "BR"));
		return formatter.format(dtConsulta);
	} catch (Exception e) {
		return null;
	}
}
public static int getDifDay(Date date1, Date date2) {
	return (int) ((clearCamposNaoData(date2).getTime() - clearCamposNaoData(date1).getTime()) / DAY);
}
public static Date clearCamposNaoData(Date date) {
	GregorianCalendar gc = (GregorianCalendar) GregorianCalendar.getInstance();
	gc.setTime(date);
	gc.set(GregorianCalendar.HOUR_OF_DAY, 0);
	gc.set(GregorianCalendar.MINUTE, 0);
	gc.set(GregorianCalendar.SECOND, 0);
	gc.set(GregorianCalendar.MILLISECOND, 0);
	return gc.getTime();
}
/**
 * Retorna uma data com a soma dos dias passados como parametro.
 * 
 * @param days
 *        Dias a serem somados com a data.
 */
public static Date sumDays(Date date, int days) {
	GregorianCalendar gc = (GregorianCalendar) GregorianCalendar.getInstance();
	gc.setTime(date);
	gc.add(GregorianCalendar.DAY_OF_MONTH, days);
	return gc.getTime();
}[/code]

Teste.java

[code]
public class Teste {

/**
 * @param args
 */
public static void main(String[] args) {
	List<Date> list = new ArrayList<Date>();
	Date dateInicial = DateUtils.getPrimeiroDiaDoAno(DateUtils.getDataAtual2());
	Date dateFinal = DateUtils.getDataAtual2();
	int dias = DateUtils.getDifDay(dateInicial, dateFinal);
	System.out.println("Data inicial: " + DateUtils.convertBrDate(dateInicial));
	System.out.println("Data final: " + DateUtils.convertBrDate(dateFinal));
	System.out.println("Diferença: " + dias);

	for (int i = 0; i < dias; i++) {
		Date date = DateUtils.sumDays(dateInicial, i);
		list.add(date);
	}
	System.out.println("Tamanho :" + list.size());
	for (Date date : list) {
		System.out.println("Data: " + DateUtils.convertBrDate(date));
	}
}

}[/code]
saída

[quote]Data inicial: 01/01/2011
Data final: 28/04/2011
Diferença: 117
Tamanho :117
Data: 01/01/2011
Data: 02/01/2011
Data: 03/01/2011
Data: 04/01/2011
Data: 05/01/2011
Data: 06/01/2011
Data: 07/01/2011
Data: 08/01/2011
Data: 09/01/2011
Data: 10/01/2011
Data: 11/01/2011
Data: 12/01/2011
Data: 13/01/2011
Data: 14/01/2011
Data: 15/01/2011
Data: 16/01/2011
Data: 17/01/2011
Data: 18/01/2011
Data: 19/01/2011
Data: 20/01/2011
Data: 21/01/2011
Data: 22/01/2011
Data: 23/01/2011
Data: 24/01/2011
Data: 25/01/2011
Data: 26/01/2011
Data: 27/01/2011
Data: 28/01/2011
Data: 29/01/2011
Data: 30/01/2011
Data: 31/01/2011
Data: 01/02/2011
Data: 02/02/2011
Data: 03/02/2011
Data: 04/02/2011
Data: 05/02/2011
Data: 06/02/2011
Data: 07/02/2011
Data: 08/02/2011
Data: 09/02/2011
Data: 10/02/2011
Data: 11/02/2011
Data: 12/02/2011
Data: 13/02/2011
Data: 14/02/2011
Data: 15/02/2011
Data: 16/02/2011
Data: 17/02/2011
Data: 18/02/2011
Data: 19/02/2011
Data: 20/02/2011
Data: 21/02/2011
Data: 22/02/2011
Data: 23/02/2011
Data: 24/02/2011
Data: 25/02/2011
Data: 26/02/2011
Data: 27/02/2011
Data: 28/02/2011
Data: 01/03/2011
Data: 02/03/2011
Data: 03/03/2011
Data: 04/03/2011
Data: 05/03/2011
Data: 06/03/2011
Data: 07/03/2011
Data: 08/03/2011
Data: 09/03/2011
Data: 10/03/2011
Data: 11/03/2011
Data: 12/03/2011
Data: 13/03/2011
Data: 14/03/2011
Data: 15/03/2011
Data: 16/03/2011
Data: 17/03/2011
Data: 18/03/2011
Data: 19/03/2011
Data: 20/03/2011
Data: 21/03/2011
Data: 22/03/2011
Data: 23/03/2011
Data: 24/03/2011
Data: 25/03/2011
Data: 26/03/2011
Data: 27/03/2011
Data: 28/03/2011
Data: 29/03/2011
Data: 30/03/2011
Data: 31/03/2011
Data: 01/04/2011
Data: 02/04/2011
Data: 03/04/2011
Data: 04/04/2011
Data: 05/04/2011
Data: 06/04/2011
Data: 07/04/2011
Data: 08/04/2011
Data: 09/04/2011
Data: 10/04/2011
Data: 11/04/2011
Data: 12/04/2011
Data: 13/04/2011
Data: 14/04/2011
Data: 15/04/2011
Data: 16/04/2011
Data: 17/04/2011
Data: 18/04/2011
Data: 19/04/2011
Data: 20/04/2011
Data: 21/04/2011
Data: 22/04/2011
Data: 23/04/2011
Data: 24/04/2011
Data: 25/04/2011
Data: 26/04/2011
Data: 27/04/2011[/quote]

Espero ter ajudado

Então, eu poderia fazer assim:

Calendar calendar = Calendar.getInstance();
calendar.setTime(date)
calendar.add(Calendar.DAY_OF_MONTH, +1);

isto faz com que ele adicione mais um no dia não é?

e agora como que faço para saber se o +1 não vai para 31…se o mês é até 30

Nossa avsouza não tinha visto sua resposta…tava colocando a minha talvez ideia haha

vou dar uma olhada no seu codigo

Olha consegui rodar e entender o código, deu bem certo para o que eu quero, vou utilizar algumas coisas rsrs

Vlw muito obrigado avsouza!