🔧 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.