✅ 1. Calendar permite datas inválidas silenciosamente
Código exemplo:

Calendar instante = Calendar.getInstance();
instante.set(2014, Calendar.FEBRUARY, 30);
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yy");
System.out.println(dateFormat.format(instante.getTime()));

Saída:

02/03/14

Explicação:

  • Mesmo que 30 de fevereiro não exista, o Calendar ajusta automaticamente a data para 2 de março, sem avisar o erro.
  • Esse comportamento pode levar a bugs difíceis de detectar.

❌ 2. A nova API (java.time) não permite datas inválidas
Código exemplo:

LocalDate.of(2014, Month.FEBRUARY, 30);

Saída (exceção):

Exception in thread "main" java.time.DateTimeException: Invalid date 'FEBRUARY 30'

Explicação:

  • A nova API do pacote java.time (Java 8+) é imutável e mais segura.
  • Tenta criar uma data inválida? Ela lança exceção imediatamente.

❌ 3. Também falha com horários inválidos
Código exemplo:

LocalDateTime horaInvalida = LocalDate.now().atTime(25, 0);

Saída (exceção):

java.time.DateTimeException: Invalid value for HourOfDay (valid values 0 - 23): 25

Explicação:

  • Tentativa de usar uma hora inválida (25h).
  • A nova API garante validade de tempo, lançando DateTimeException.

⚠️ 4. Problema histórico com Joda-Time (DateMidnight)

  • Nota da documentação do Joda-Time:
  • O método toDateMidnight pode lançar exceção se a data cair no início do horário de verão.

Exemplo: quando não existe "meia-noite" naquele dia.

Recomendação da própria equipe:

  • Evitar DateMidnight.
  • Usar toDateTimeAtStartOfDay() como alternativa.

Curiosidade:

  • O próprio criador do Joda-Time, Stephen Colebourne, disse que não há boas razões para usar DateMidnight.
  • Essa classe não foi incluída na nova API de datas do Java 8.

✅ Conclusão

  • Calendar: Comportamento tolerante, ajusta automaticamente datas inválidas → perigoso.
  • java.time (Java 8+): Mais segura, lança exceção para qualquer valor inválido.
  • Use sempre a nova API de datas (LocalDate, LocalDateTime, etc.) para evitar bugs silenciosos e ter maior controle e segurança.