dateFormat.parser("00000000") == 30/11/0002?

1 resposta
A

Pq o código abaixo retorna 30/11/0002 ???

import java.text.DateFormat;
import java.text.SimpleDateFormat;

public class teste {
    public static void main(String[] args) {
      DateFormat dtf = new SimpleDateFormat("yyyyMMdd");
      try {
         dtf.parse("00000000");
      } catch (Exception e) {
         // do nothing
      }
   }
}

Obrigado.

1 Resposta

T

Porque Jesus foi circuncidado no dia Primeiro de Janeiro do ano Um*; não existe o dia zero do mês zero do ano zero, e o Java tenta corrigir sua entrada, em vez de reclamar. Se quiser que ele reclame (gere uma ParseException), use dtf.setLenient (false) antes de efetuar a conversão.

(É claro que os teólogos, os historiadores e os arqueólogos sabem que Jesus não foi circuncidado nesse dia; o dia 25 de dezembro para o Natal foi estipulado muito depois de seu nascimento, e o dia primeiro é 7 dias depois. Uma semana é o prazo tradicional para a circuncisão. Veja http://en.wikipedia.org/wiki/Christmas#Origin_of_Christian_festival )

Criado 26 de setembro de 2007
Ultima resposta 26 de set. de 2007
Respostas 1
Participantes 2