Cómo comparar dos fechas en Java

Asad Riaz 12 octubre 2023
  1. before() método para comparar dos fechas en Java
  2. after() método para comparar dos fechas en Java
  3. equals() método para comparar dos fechas en Java
  4. compareTo() método para comparar dos fechas en Java
Cómo comparar dos fechas en Java

En este tutorial, aprenderemos múltiples métodos para comparar Date en Java. Para conseguir los resultados deseados, necesitamos métodos específicos, es decir, before(), after(), equals() y compareTo().

before() método para comparar dos fechas en Java

El primer método es el método before() en la clase Date de Java que realiza la comparación del objeto Date y el instante Date dado. Devuelve true cuando el objeto Data llega antes que el objeto Date dado.

Considera el siguiente código:

// java 1.8
package simpletesting;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
      Date date1 = dateFormat.parse("2019-09-16");
      Date date2 = dateFormat.parse("2020-01-25");
      System.out.println("Date-1: " + dateFormat.format(date1));
      System.out.println("Date-2: " + dateFormat.format(date2));
      if (date1.before(date2)) {
        System.out.println("Date-1 is before Date-2");
      }
    } catch (ParseException ex) {
    }
  }
}

Producción :

Date-1: 2019-09-16
Date-2: 2020-01-25
Date-1 is before Date-2

after() método para comparar dos fechas en Java

Otro enfoque para lograr esta comparación es usando el método after() en la clase Date de Java. Este método es opuesto al anterior método before y devuelve true cuando el objeto Data llega más tarde que el objeto Date dado.

Considera el siguiente código:

// java 1.8
package simpletesting;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      SimpleDateFormat sdformat = new SimpleDateFormat("yyyy-MM-dd");
      Date date1 = sdformat.parse("2020-01-25");
      Date date2 = sdformat.parse("2019-09-16");
      System.out.println("Date-1: " + sdformat.format(date1));
      System.out.println("Date-2: " + sdformat.format(date2));
      if (date1.after(date2)) {
        System.out.println("Date-1 is after Date-2");
      }
    } catch (ParseException ex) {
    }
  }
}

Producción :

Date-1: 2020-01-25
Date-2: 2019-09-16
Date-1 is after Date-2

equals() método para comparar dos fechas en Java

Otro enfoque es usar el método equals() en la clase Date de Java. Compara dos fechas y devuelve true si son iguales.

Considera el siguiente código:

// java 1.8
package simpletesting;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      SimpleDateFormat sdformat = new SimpleDateFormat("yyyy-dd-mm");
      Date date1 = sdformat.parse("2020-01-25");
      Date date2 = sdformat.parse("2020-01-25");
      System.out.println("Date-1: " + sdformat.format(date1));
      System.out.println("Date-2: " + sdformat.format(date2));
      if (date1.equals(date2)) {
        System.out.println("Date-1 is same as Date-2");
      }
    } catch (ParseException ex) {
    }
  }
}

Producción :

Date-1: 2020-01-25
Date-2: 2020-01-25
Date-1 is same as Date-2

compareTo() método para comparar dos fechas en Java

La última aproximación es el método compareTo() en la clase Date de Java. Compara dos fechas y devuelve diferentes valores basados en el resultado de la comparación.

  • Devuelve 0 si el argumento date es igual al objeto Date.
  • Devuelve un valor positivo si el objeto Date está después de la fecha del argumento
  • Devuelve un negativo si el objeto Date es anterior a la fecha del argumento.

Considere el siguiente código:

// java 1.8
package simpletesting;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      SimpleDateFormat sdformat = new SimpleDateFormat("yyyy-MM-dd");
      Date date1 = sdformat.parse("2020-01-25");
      Date date2 = sdformat.parse("2020-01-23");
      System.out.println("Date-1: " + sdformat.format(date1));
      System.out.println("Date-2: " + sdformat.format(date2));
      if (date1.compareTo(date2) > 0) {
        System.out.println("Date-1 is after Date-2");
      } else if (date1.compareTo(date2) < 0) {
        System.out.println("Date-1 is before Date-2");
      } else if (date1.compareTo(date2) == 0) {
        System.out.println("Date-1 is same as Date-2");
      }
    } catch (ParseException ex) {
    }
  }
}

Producción :

Date-1: 2020-01-25
Date-2: 2020-01-23
Date-1 is after Date-2

Artículo relacionado - Java DateTime