Como comparar duas datas em Java

Asad Riaz 12 outubro 2023
  1. Método before() para comparar duas datas em Java
  2. after() Método para comparar duas datas em Java
  3. equals() Método para Comparar Duas Datas em Java
  4. compareTo() Método para Comparar Duas Datas em Java
Como comparar duas datas em Java

Neste tutorial, aprenderemos vários métodos para comparar datas em Java. Para alcançar resultados desejáveis, precisamos de métodos como before(), after(), equals() e compareTo().

Método before() para comparar duas datas em Java

O primeiro método é o método before() na classe Java Date que realiza a comparação do objeto Date e o dado Date instantâneo. Ele retorna true quando o objeto Date vem mais cedo do que o objeto Date dado.

Códigos de exemplo:

// 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) {
    }
  }
}

Resultado:

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

after() Método para comparar duas datas em Java

Outra abordagem para conseguir esta comparação é utilizar o método after() na classe Java Date. Este método é oposto ao método anterior e retorna true quando o objeto Date vem mais tarde do que o objeto Date dado.

Códigos de exemplo:

// 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) {
    }
  }
}

Resultado:

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

equals() Método para Comparar Duas Datas em Java

Outra abordagem é utilizar o método equals() na classe Java Date. Ele compara duas datas e retorna true se elas forem iguais.

Códigos de exemplo:

// 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) {
    }
  }
}

Resultado:

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

compareTo() Método para Comparar Duas Datas em Java

A última abordagem é o método compareTo() na classe Java Date. Ele compara duas datas e retorna valores diferentes com base no resultado da comparação.

  • Ele retorna 0 se a data do argumento for igual a um objeto Date.
  • Ele retorna um valor positivo se um objeto Date estiver após a data da discussão
  • Ele retorna um negativo se um objeto Date estiver anterior à data da discussão

Códigos de exemplo:

// 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) {
    }
  }
}

Resultado:

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

Artigo relacionado - Java DateTime