Comportamento estranho de LENIENT do SimpleDateFormat para alguns anos

To postando meio que sem acreditar mesmo.
Criem um SimpleDateFormat ae com a mascara dd/MM/yyyy
Agora tentem formatar as seguintes datas:

  • 03/11/2040
  • 03/11/2041
  • 03/11/2042
  • 03/11/2999
  • 03/11/3000

Apenas o ano 2041 e o ano 2999 falham.
Isso é o que, easter egg de programador puto com a Sun?

Setando o lenient(false), pra poder criticar datas invalidas

[code]public static void main(String[] args) throws Exception{
List datas = Arrays.asList(“03/11/2040”,
“03/11/2041”,
“03/11/2042”,
“03/11/2999”,
“03/11/3000”);

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
df.setLenient(false);

for(String data : datas){
	System.out.println(df.parse(data));
}

}[/code]Imprimiu:Sat Nov 03 00:00:00 GMT-03:00 2040 Sun Nov 03 00:00:00 GMT-03:00 2041 Mon Nov 03 00:00:00 GMT-03:00 2042 Sun Nov 03 00:00:00 GMT-03:00 2999 Mon Nov 03 00:00:00 GMT-03:00 3000Sem nenhuma exceção.

Problema de JDK será?

Não sei hehehe, mas foi estranho o suficiente pra me fazer querer testar :slight_smile:

Eu uso a versão 1.7.0_05 da JDK da Oracle mesmo.

Testei com a última versão da JDK 1.6 que tinha aqui e obtive o mesmo resultado.

Rodrigo, copiei e colei seu exemplo, e deu pau no 2041. Uso a JDK 5

Puxa, a Oracle não dá mais suporte (exceto pago) para o JDK 5 :frowning: