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.
[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));
}
}