Restar fechas en Java
-
Usa
java.util.Date
para restar dos fechas en Java -
Utilizar
java.time.Duration
yjava.time.Period
para restar dos fechas en Java -
Utilizar
java.time.temporal.ChronoUnit
para restar dos fechas en Java -
Utilice
java.time.temporal.Temporal
until()
para restar dos fechas en Java
Este artículo explica cómo podemos restar dos fechas u obtener la diferencia entre dos fechas en Java.
Usa java.util.Date
para restar dos fechas en Java
La clase java.text.SimpleDateFormat
se utiliza para formatear y analizar las fechas según el patrón especificado. Calculamos el valor absoluto de la diferencia de tiempo entre las dos fechas en milisegundos.
El método convert()
de la clase TimeUnit
acepta dos parámetros, que son la duración del tiempo y la unidad de la duración del tiempo. Creamos un objeto TimeUnit
time
y convertimos los milisegundos en días utilizando el método convert()
.
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH);
Date firstDate = sdf.parse("04/22/2020");
Date secondDate = sdf.parse("04/27/2020");
long diff = secondDate.getTime() - firstDate.getTime();
TimeUnit time = TimeUnit.DAYS;
long diffrence = time.convert(diff, TimeUnit.MILLISECONDS);
System.out.println("The difference in days is : " + diffrence);
}
}
Producción :
The difference in days is : 5
Utilizar java.time.Duration
y java.time.Period
para restar dos fechas en Java
La clase Duration
mide una cantidad de tiempo en segundos y nanosegundos, mientras que la clase Period
mide el tiempo en años, meses y días. El método atStartofDay()
añade la hora de medianoche a la fecha local.
Obtenemos el objeto Period
como la diferencia entre dos fechas, mientras que obtenemos la diferencia entre dos instantes como el objeto Duration
utilizando el método between()
. Se prefiere el método Duration
para cantidades de tiempo más cortas.
La duración diff
se convierte en días utilizando toDays()
. Del mismo modo, podemos obtener las unidades de fecha de Period
utilizando getYears()
, getMonths
, y getDays()
.
import java.time.Duration;
import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) throws Exception {
LocalDate d1 = LocalDate.parse("2020-05-06", DateTimeFormatter.ISO_LOCAL_DATE);
LocalDate d2 = LocalDate.parse("2020-05-30", DateTimeFormatter.ISO_LOCAL_DATE);
LocalDate d3 = LocalDate.parse("2018-05-06", DateTimeFormatter.ISO_LOCAL_DATE);
LocalDate d4 = LocalDate.parse("2020-01-23", DateTimeFormatter.ISO_LOCAL_DATE);
Duration diff = Duration.between(d1.atStartOfDay(), d2.atStartOfDay());
Period period = Period.between(d3, d4);
long diffDays = diff.toDays();
int years = Math.abs(period.getYears());
int months = Math.abs(period.getMonths());
int days = Math.abs(period.getDays());
System.out.println("Diffrence between dates is : " + diffDays + "days");
System.out.println(
"Diffrence is : " + years + " year, " + months + " months, " + days + " days");
}
}
Producción :
Diffrence between dates is : 24days
Diffrence is : 1 year, 8 months, 17 days
Utilizar java.time.temporal.ChronoUnit
para restar dos fechas en Java
En Java 8, la API Time
representa una unidad de fecha-tiempo utilizando la interfaz TemporalUnit
. Cada unidad proporciona una implementación del método llamado between()
. Este método calcula la cantidad de tiempo entre dos objetos temporales.
La ChronoUnit
es el conjunto estándar de unidades de fecha-hora que proporciona un acceso basado en unidades para manipular una fecha, hora o fecha-hora.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
public class Main {
public static void main(String[] args) throws Exception {
LocalDate dBefore = LocalDate.parse("2018-05-06", DateTimeFormatter.ISO_LOCAL_DATE);
LocalDate dAfter = LocalDate.parse("2018-05-30", DateTimeFormatter.ISO_LOCAL_DATE);
long diff = ChronoUnit.DAYS.between(dBefore, dAfter);
System.out.println("difference is : " + diff);
}
}
Producción :
difference is : 24
Utilice java.time.temporal.Temporal
until()
para restar dos fechas en Java
El método until()
calcula la cantidad de tiempo hasta otro temporal en términos de la unidad especificada. El resultado será negativo si el final es anterior al inicio.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.time.temporal.Temporal;
public class Main {
public static void main(String[] args) throws Exception {
LocalDate dBefore = LocalDate.parse("2018-05-21", DateTimeFormatter.ISO_LOCAL_DATE);
LocalDate dAfter = LocalDate.parse("2018-05-30", DateTimeFormatter.ISO_LOCAL_DATE);
long diff = dBefore.until(dAfter, ChronoUnit.DAYS);
System.out.println("difference is : " + diff + " days");
}
}
Producción :
difference is : 9 days
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn