Ola pessoal, estou com o seguinte problema, preciso fazer um for, utilizando parametros Date, porem nao sei como, serial algo assim:
for( Date i=datainicial; i< dataFinal; i++){
.....
}
Como posso fazer isso ?? creio que o argumento “++” nao pode ser utilizado como incremento para datas certo??
Vlw
Boa tarde!
Use um while.
Calendar dateInitial = Calendar.getInstance();
Calendar dateFinish = Calendar.getInsance();
while(dateInitial.getTime().before(dateFinish.getTime())) {
//TODO:CODE
dateFinish.add(Calendar.DAY_OF_MONTH, 1);
}
Alguma coisa desse tipo.
Qualquer coisa posta ai!
Até mais…
De fato, você não pode usar Date e sim Calendar, e você não pode usar ++.
Queria saber se a sua idéia é incrementar um dia de cada vez. Se for isso, um exemplo:
Calendar cal = Calendar.getInstance();
cal.setTime (dataInicial);
Calendar calFinal = Calendar.getInstance();
calFinal.setTime (dataFinal);
while (cal.before (calFinal)) {
Date date = cal.getTime();
// fazer as coisas que precisam desse date.
...
// passar para o próximo dia
cal.add (Calendar.DATE, 1);
}
Na verdade, esqueci de especificar algo bem importante… o meu for incrementa de hora em hora, no caso estou trabalhando espcificamente com horas de um dia, e nao com dias…
como ficaria?
Bom, em vez de usar cal.add (Calendar.DATE, 1), use cal.add (Calendar.HOUR_OF_DAY, 1)
Na verdade, até da para fazer com Date e somar (não incrementar 1).
Lembre-se que o java considera a instância de java.util.Date como sendo o tempo, em milissegundos, decorridos de 01/01/1970 00:00:00 até o momento em que a instância foi criada e/ou de acordo com os parâmetros passados ao construtor.
Assim sendo, é possível converter em um long (o método getTime, da classe java.util.Date retorna um valor long) e realizar o incremento de horas, considerando que:
1 s = 1000 ms
1 m = 60 s
1 h = 60 m
1000 * 60 * 60 = 360000 ms
Claro, este é o método hardcore…
Amigos, há crianças na sala…
De qualquer forma, usar Calendar.add deve levar em conta aqueles probleminhas chatos de horário de verão…
bom tentei mais ainda sim há um problema…
Segue o meu codigo
SimpleDateFormat formatador = new SimpleDateFormat("HH:mm:ss");
jobGroup.setStartTime(formatador.parse("23:09:00"));
jobGroup.setEndTime(formatador.parse("23:05:00"));
startCronCalendar.setTime(jobGroup.getStartTime());
endCronCalendar.setTime(jobGroup.getEndTime());
//esse fluxo precisa fazer com que o start time cruze o limite diario e chegue até o endTime
//Ex: 23,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
while(startCronCalendar.after(endCronCalendar)) {
//Faca o que eu preciso
startCronCalendar.add(Calendar.HOUR_OF_DAY,1);
}
Esta em looping infinito, alguem consegue me ajudar?
[quote=juliocesarsrosa]bom tentei mais ainda sim há um problema…
Segue o meu codigo
SimpleDateFormat formatador = new SimpleDateFormat("HH:mm:ss");
jobGroup.setStartTime(formatador.parse("23:09:00"));
jobGroup.setEndTime(formatador.parse("23:05:00"));
startCronCalendar.setTime(jobGroup.getStartTime());
endCronCalendar.setTime(jobGroup.getEndTime());
//esse fluxo precisa fazer com que o start time cruze o limite diario e chegue até o endTime
//Ex: 23,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
while(startCronCalendar.after(endCronCalendar)) {
//Faca o que eu preciso
startCronCalendar.add(Calendar.HOUR_OF_DAY,1);
}
Esta em looping infinito, alguem consegue me ajudar?
[/quote]
What do you mean with startCronCalendar.[b]after/b?
After
Before
E aqui, alguns detalhes sobre os métodos de incremento de tempo da classe Calendar
add()
set()
roll()