Estou com problemas com a classe java.util.Calendar. O código abaixo está gerando “java.lang.IllegalArgumentException: HOUR_OF_DAY” no SLED10 (Suse Linux Enterprise Desktop 10).
No jdk1.6.0_10 o erro acontece após a data 10 de Outubro de 2009;
No jdk1.6.0_12, jdk1.6.0_14, jdk1.6.0_16 o erro acontece após a data 17 de Outubro de 2009;
import java.util.*;
public class CalTeste {
public static void main(String[] args) {
Calendar calendar = new GregorianCalendar(new Locale("pt", "BR"));
calendar.setLenient(false);
calendar.set(2009, 0, 1); // (01/01/2009)
Date lastDate = calendar.getTime();
while(true){
calendar.add(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date date = null;
try {
date = calendar.getTime();
if(calendar.get(Calendar.YEAR)>=2010){ //Para em 2010
break;
}
} catch (Exception e) {
e.printStackTrace();
System.err.println("Erro! Última data válida: " + lastDate + ", Valor próximo dia: " + date);
break;
}
lastDate = date;
}
}
}
Alguém saberia dizer qual o problema com o código acima? É como se o java não aceitasse a hora “zero” no dia 11/10/2009 (jdk1.6_10) e 18/10/2009 (outros jdk’s)…