🔧 Problema antigo com Calendar:
Calcular diferenças de datas exigia trabalhar com milissegundos.
Exemplo: getTimeInMillis() e divisão para converter em dias.
Código era verboso, difícil de manter e sujeito a erros.

🆕 Solução moderna com ChronoUnit (nova API java.time):
Usa o método between() para calcular facilmente a diferença.
Exemplo: ChronoUnit.DAYS.between(data1, data2).

🧮 Limitações do ChronoUnit:
Calcula cada unidade separadamente (dias, meses, anos).
Pode resultar em informações redundantes (ex: 9147 dias, 300 meses...).

📅 Uso da classe Period:
Representa uma diferença de anos, meses e dias.
Mais precisa e expressiva para datas.

Exemplo: Period.between(data1, data2) retorna um objeto com .getDays(), .getMonths(), .getYears().

🔁 Tratando períodos negativos:
Método isNegative() identifica se o período é negativo.
Pode inverter os valores com negated().

✨ Criação manual de Period:
Métodos: Period.of(anos, meses, dias), ofDays(), ofMonths(), ofYears().
⏱️ Para tempo (horas/minutos/segundos), usa-se Duration:
Period serve só para datas.
Duration é usada para tempo exato.

ExemploDuracaoPeriodo.java

✅ O que você encontra neste exemplo:

  • Calendar: cálculo manual de dias com milissegundos.
  • ChronoUnit: cálculo de dias, meses e anos separados.
  • Period: cálculo preciso de anos, meses e dias.
  • Period.isNegative() e negated(): tratamento para períodos negativos.
  • Duration: diferença entre dois instantes com precisão de horas, minutos e segundos.