Ya hemos visto cómo encontrar el número de días entre dos fechas anteriores a Java 8. En este tutorial veremos cómo calcular el número de días entre dos fechas en Java 8. Para calcular los días entre dos fechas podemos usar el DAYS.between()
método de java.time.temporal.ChronoUnit
.
Sintaxis de DAYS.between ():
long noOfDaysBetween = DAYS.between(startDate, endDate); // or alternatively long noOfDaysBetween = startDate.until(endDate, DAYS);
StartDate es inclusivo y endDate es exclusivo en el cálculo de noOfDaysBetween
Veamos el ejemplo completo de cómo utilizar este método.
1. Número de días entre dos fechas con el método DAYS.between ()
import java.time.LocalDate; import java.time.Month; import java.time.temporal.ChronoUnit; public class Example { public static void main(String[] args) { //24-May-2017, change this to your desired Start Date LocalDate dateBefore = LocalDate.of(2017, Month.MAY, 24); //29-July-2017, change this to your desired End Date LocalDate dateAfter = LocalDate.of(2017, Month.JULY, 29); long noOfDaysBetween = ChronoUnit.DAYS.between(dateBefore, dateAfter); System.out.println(noOfDaysBetween); } }
Producción:
66
2. Analice las fechas y luego calcule los días entre ellas
En el ejemplo anterior, estamos pasando la fecha en el formato deseado, sin embargo, si tiene la fecha como una cadena, puede analizar la fecha para convertirla a Java 8 LocalDate. Después del análisis, estamos calculando los días entre similar al ejemplo anterior.
Puede analizar una fecha de cualquier formato en el formato deseado. Consulte el tutorial de Java: análisis de fechas para ver ejemplos de análisis de fechas.
import java.time.LocalDate; import java.time.temporal.ChronoUnit; public class Example { public static void main(String[] args) { String dateBeforeString = "2017-05-24"; String dateAfterString = "2017-07-29"; //Parsing the date LocalDate dateBefore = LocalDate.parse(dateBeforeString); LocalDate dateAfter = LocalDate.parse(dateAfterString); //calculating number of days in between long noOfDaysBetween = ChronoUnit.DAYS.between(dateBefore, dateAfter); //displaying the number of days System.out.println(noOfDaysBetween); } }
Producción:
66