Cómo comparar dos fechas en Java
- 
          
            before()método para comparar dos fechas en Java
- 
          
            after()método para comparar dos fechas en Java
- 
          
            equals()método para comparar dos fechas en Java
- 
          
            compareTo()método para 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 0si el argumento date es igual al objetoDate.
- Devuelve un valor positivo si el objeto Dateestá después de la fecha del argumento
- Devuelve un negativo si el objeto Datees 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