Comment comparer deux dates en Java

Asad Riaz 12 octobre 2023
  1. La méthode before() pour comparer deux dates en Java
  2. méthode after() pour comparer deux dates en Java
  3. méthode equals() pour comparer deux dates en Java
  4. méthode compareTo() pour comparer deux dates en Java
Comment comparer deux dates en Java

Dans ce tutoriel, nous apprendrons les multiples méthodes pour comparer des dates en Java. Pour obtenir les résultats souhaités, nous avons besoin de méthodes spécifiées, c’est-à-dire, before(), after(), equals() et comparerTo().

La méthode before() pour comparer deux dates en Java

La première méthode est la méthode before() dans la classe Java Date qui effectue la comparaison de l’objet Date et de l’instant Date donné. Elle retourne true lorsque l’objet Date est antérieur à l’objet Date donné.

Considérons le code suivant:

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

Production:

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

méthode after() pour comparer deux dates en Java

Une autre approche pour réaliser cette comparaison est d’utiliser la méthode after() dans la classe Java Date. Cette méthode est opposée à la méthode before ci-dessus et retourne true lorsque l’objet Date est postérieur à l’objet Date donné.

Considérons le code suivant:

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

Production:

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

méthode equals() pour comparer deux dates en Java

Une autre approche consiste à utiliser la méthode equals() dans la classe Java Date. Elle compare deux dates et retourne true si elles sont égales.

Considérons le code suivant:

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

Production:

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

méthode compareTo() pour comparer deux dates en Java

La dernière approche est la méthode compareTo() dans la classe Java Date. Elle compare deux dates et retourne des valeurs différentes en fonction du résultat de la comparaison.

  • Elle retourne 0 si l’argument date est égal à l’objet Date.
  • Il retourne une valeur positive si l’objet Date est postérieur à la date de l’argument
  • Il retourne un négatif si l’objet Date est antérieur à la date de l’argument

Considérez le code suivant:

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

Production:

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

Article connexe - Java DateTime