Comparación de dos fechas

Java:
Comparación de dos fechas

Cómo:

Java ofrece varias maneras de comparar fechas, aquí van algunos ejemplos utilizando LocalDate de la librería java.time, la cual está diseñada para ser inmutable y thread-safe:

import java.time.LocalDate;

public class DateComparison {

    public static void main(String[] args) {
        LocalDate date1 = LocalDate.of(2023, 4, 15);
        LocalDate date2 = LocalDate.of(2023, 10, 30);

        // Comprobando si una fecha es después de la otra
        if (date1.isAfter(date2)) {
            System.out.println("La fecha1 es después de la fecha2.");
        }

        // Comprobando si una fecha es antes de la otra
        if (date1.isBefore(date2)) {
            System.out.println("La fecha1 es antes de la fecha2."); // Este se ejecutará
        }
        
        // Comprobando si dos fechas son iguales
        if (date1.isEqual(date2)) {
            System.out.println("Ambas fechas son iguales.");
        } else {
            System.out.println("Las fechas son distintas."); // Este se ejecutará
        }
    }
}

Output esperado:

La fecha1 es antes de la fecha2.
Las fechas son distintas.

Deep Dive

Antes de java.time, introducida en Java 8, java.util.Date y java.util.Calendar eran las clases que usábamos para tratar con fechas, pero tenían varios problemas de diseño. Por ejemplo, no eran thread-safe, lo que podía causar problemas en aplicaciones multi-hilo.

En Java 8, java.time fue la solución. Inspirado en Joda-Time, provee una API más limpia y objetiva. Para comparar dos fechas, LocalDate tiene métodos como isBefore(), isAfter() y isEqual(). Si trabajas con tiempo exacto, puedes usar LocalDateTime o ZonedDateTime.

Alternativas para comparar fechas incluyen:

  1. Comparar timestamps, obteniendo milisegundos desde la “epoch” (1970-01-01T00:00:00Z).
  2. Usar librerías de terceros como Joda-Time, aunque con java.time esto se vuelve menos necesario.

See Also

Aquí hay algunos recursos para seguir aprendiendo: