Boa tarde!!
Bom, fiz algumas pesquisas mas minha duvida é um pouco diferente.
Vamos la.
Supondo que eu tenha duas Strings com um formato de data yyyy-MM-dd ou dd/MM/yyyy, por exemplo.
Caso eu queira uma lista de todos os dias nesse intervalo, como devo prosseguir?
Estou pesquisando as classes Calendar, Date, DateFormat e SimpleDateFormat mas ainda está um pouco confuso para mim.
Exemplo:
Tendo os intervalos 10/07/2009 e 2/10/2009 gostaria de ter uma lista dos dias que estão compreendidos nesse período assim:
Alguém tem alguma sugestão? Não conheço quase nada as classes de Date and Time de java.
Grato!
import java.util.*;
import java.text.*;
class TesteIntervaloDatas {
public static void main(String[] args) throws ParseException {
DateFormat df = new SimpleDateFormat ("dd/MM/yyyy");
Date dt1 = df.parse ("10/07/2009");
Date dt2 = df.parse ("02/10/2009");
Calendar cal = Calendar.getInstance();
cal.setTime (dt1);
for (Date dt = dt1; dt.compareTo (dt2) <= 0; ) {
System.out.println (df.format (dt));
cal.add (Calendar.DATE, +1);
dt = cal.getTime();
}
}
}
1 curtida
Poxa cara…
Muito simples!
Salvou minha vida man!
Farei alguns testes com outros casos semelhantes e posto resultados.
Muito obrigado novamente e abraços!
E caso eu tenha uma data, tipo 10/07/2009 (qta imaginação né?) e queira o último dia daquele mês naquele ano, tipo 31/07/2009? alguma dica?
Imensamente grato!
Só pra ser mais específico, dado o exemplo inicial do tópico, seria interessante que eu obtesse o primeiro e último dia de cada mês desse período.
Algo do tipo:
10/07/2009
31/07/2009
01/08/2009
31/08/2009
01/09/2009
30/09/2009
01/10/2009
02/10/2009
Sei que to perguntando demais, mas juro que to tentando aqui a fazer esse exercício dumal.
Não reparem a n00bagem, nunca tinha mexido com essas classes Calendar antes…
Mais sugestões? =D
Obrigado!!
thingol eu te amo hehehehe
Com essas informações consegui exatamente aquilo que queria:
List<Relatorio> lista = new ArrayList<Relatorio>();
for (Date dt = dtI; dt.compareTo(dtF) <= 0;) {
Relatorio obj = new Relatorio();
obj.setDataInicial(ft.format(dt));
int ultimoDia = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
int diaAtual = cal.get(cal.DAY_OF_MONTH);
cal.add(Calendar.DATE, +(ultimoDia - diaAtual)); //a.k.a. DUD (ultimo dia do mes corrente, vide teste de mesa =P)
if (cal.getTime().compareTo(dtF) < 0) {
obj.setDataFinal(ft.format(cal.getTime()));
} else {
obj.setDataFinal(ft.format(dtF));
}
lista.add(obj);
cal.add(Calendar.DATE, +1);
dt = cal.getTime();
}
Funcionou perfeitamente aqui!
Muitíssimo obigado pela ajuda!