Esta publicación discutirá cómo calcular la diferencia entre dos fechas en Java.

1. Usando TimeUnit.convert() método

La idea es primero obtener la diferencia entre dos fechas en milisegundos usando el Date.getTime() método. Entonces podemos usar el convert() método de java.util.concurrent.TimeUnit enum para convertir la duración de tiempo dada en la unidad dada a la unidad del argumento.

Descargar  Ejecutar código

Resultado:

1440

 
Tenga en cuenta que el fragmento de código anterior no considera las zonas horarias como java.util.Date siempre está en UTC. Además, esto no tendrá en cuenta el horario de verano.

2. Usando java.time paquete

Desde Java 8 en adelante, deberíamos usar el java.time paquete que ofrece muchas mejoras con respecto a la API de fecha y hora de Java existente. Así es como podemos calcular la diferencia entre dos fechas como Duration en Java 8 y superior.

Descargar  Ejecutar código

Resultado:

PT1704H5M40S

 
Si tienes un java.util.Date objeto, debe convertirlo en java.time.Instant y luego calcule el tiempo transcurrido como una Duración.

Descargar  Ejecutar código

Resultado:

PT3880H26M38.942S

3. Usando Joda Time

Antes de Java 8, muchos proyectos de Java han utilizado el Biblioteca Joda-Time para Fecha y Time clases Esto se debe a que las clases estándar de fecha y hora anteriores a Java 8 son deficientes. Pero con la introducción de la java.time paquete en Java SE 8, el equipo de Joda-Time ha pedido a sus usuarios que migren a java.time (JSR-310).

Si está utilizando la biblioteca Joda-Time en su proyecto y solo desea conocer el número total de días completos entre dos fechas, puede utilizar la nueva Days class en la versión 1.4 de Joda-Time.

 
Si desea calcular el número total de días, semanas, meses y años entre las dos fechas, necesita un Period. De forma predeterminada, esto dividirá la diferencia entre las dos fechas y horas en partes, como "1 mes, 2 semanas, 4 días y 7 horas".

 
Puede controlar qué campos se extraen usando un PeriodType.

 
Este ejemplo no devolverá semanas ni campos de tiempo; así, el ejemplo anterior se convierte en “1 mes y 18 días”.

Se trata de calcular la diferencia entre dos fechas en Java.