Il existe différentes façons de comparer des dates en Java. Dans ce langage informatique, une date est représentée comme un point (de type long) dans le temps, représentant le nombre de millisecondes écoulées depuis le 1er janvier 1970. En Java, Date est un objet, ce qui signifie qu'il inclut plusieurs méthodes de comparaison. Toute méthode comparant deux dates consistera principalement en la comparaison des temps de ces dates.

Méthode 1
Méthode 1 sur 4:
À l'aide de compareTo

  1. 1
    Servez-vous de compareTo. L'objet Date implémente Comparable<Date> et ainsi deux dates peuvent être comparées directement à l'aide de la méthode compareTo. Si les dates correspondent au même point dans le temps, la méthode renverra zéro. Si la date comparée se trouve avant la date donnée en argument, une valeur négative sera renvoyée. Si la date comparée se trouve après la date donnée en argument, une valeur positive sera renvoyée. Si les dates sont égales, la valeur renvoyée sera 0. [1]
  2. 2
    Créez les objets des dates. Vous devrez créer chaque objet Date avant de commencer à les comparer. Une manière de faire cela est de se servir de la classe SimpleDateFormat. Elle permet d'entrer facilement des valeurs de date dans des objets de date.
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //Pour déclarer les valeurs dans les nouveaux objets Date, employez le même format de date que pour créer des dates
      Date date1 = sdf.parse("1995-02-23"); //La date1 est le 23 février 1995
      Date date2 = sdf.parse("2001-10-31"); //La date2 est le 31 octobre 2001
      Date date3 = sdf.parse("1995-02-23"); //La date3 est le 23 février 1995
      
  3. 3
    Comparez les objets Date. Le code ci-dessous vous présentera chaque cas : inférieur, supérieur, égal.
      date1.compareTo(date2); //date1 < date2, renvoie un négatif
      date2.compareTo(date1); //date2 > date1, renvoie un positif
      date1.compareTo(date3); //date1 = date3, la console affichera 0
      
    Publicité

Méthode 2
Méthode 2 sur 4:
Se servir des méthodes equals, after et before

  1. 1
    Servez-vous de equals, after et before. Les dates peuvent être comparées à l'aide des méthodes equals, after et before. Si deux dates correspondent au même point temporel, la méthode equals renverra true. Les exemples suivants utiliseront les dates précédemment créées pour la méthode compareTo. [2]
  2. 2
    Faites une comparaison avec la méthode before. Le code donné ci-dessous montre un cas true et un cas false. Si la date1 se situe avant la date2, before renvoie true. Si ce n'est pas le cas, elle renvoie false.
      System.out.print(date1.before(date2)); //affiche true
      System.out.print(date2.before(date2)); //affiche false
      
  3. 3
    Faites une comparaison avec la méthode after. Le code donné ci-dessous montre un cas true et un cas false. Si la date1 se situe après la date2, after renvoie true. Si ce n'est pas le cas, after renvoie false.
      System.out.print(date2.after(date1));//affiche true
      System.out.print(date1.after(date2));//affiche false
      
  4. 4
    Faites une comparaison avec la méthode equals. Le code donné ci-dessous montre un cas true et un cas false. Si les dates sont égales, equals renvoie true. Si ce n'est pas le cas, equals renvoie false.
      System.out.print(date1.equals(date3));//affiche true
      System.out.print(date1.equals(date2));//affiche false
      
    Publicité

Méthode 3
Méthode 3 sur 4:
Se servir de la classe Calendar

  1. 1
    Servez-vous du calendrier. La classe Calendar comporte également les méthodes compareTo, equals, after et before, qui fonctionnent de la même manière que décrite ci-dessus pour la classe Date. Ainsi, si l'information de date est contenue dans un calendrier, il n'y a pas besoin d'extraire la date simplement pour faire une comparaison. [3]
  2. 2
    Créez des instances de Calendar. Pour vous servir des méthodes de la classe Calendar, vous aurez besoin de quelques instances de Calendar. Heureusement, vous pouvez récupérer les informations de temps à partir des instances de Date déjà créées.
      Calendar cal1 = Calendar.getInstance(); //déclare cal1
      Calendar cal2 = Calendar.getInstance(); //déclare cal2
      Calendar cal3 = Calendar.getInstance(); //déclare cal3
      cal1.setTime(date1); //entre la date dans cal1
      cal2.setTime(date2);
      cal3.setTime(date3);
      
  3. 3
    Comparez cal1 et cal2 à l'aide de a méthode before. Comme cal1 se situe avant cal2, le code ci-dessous devrait faire afficher true.
      System.out.print(cal1.before(cal2)); //affichera true
      
  4. 4
    Comparez cal1 et cal2 à l'aide de a méthode after. Comme cal1 se situe avant cal2, le code ci-dessous devrait faire afficher false.
      System.out.print(cal1.after(cal2)); //fait afficher false
      
  5. 5
    Comparez cal1 et cal2 à l'aide de la méthode equals. Le code donné ci-dessous présentera un exemple du cas true et un exemple du cas false. La condition dépend des instances de Calendar qui sont comparées. Ce code devrait afficher « true », suivi de « false » sur la ligne suivante.
      System.out.println(cal1.equals(cal3)); //fait afficher true : cal1 == cal3
      System.out.print(cal1.equals(cal2)); //fait afficher false : cal1 != cal2
      
    Publicité

Méthode 4
Méthode 4 sur 4:
Se servir de la méthode getTime

  1. 1
    Servez-vous de getTime. Il est également possible de comparer directement le point temporel des deux dates, bien que n'importe laquelle des approches données précédemment devrait être plus lisible et donc préférable. Il s'agira là d'une comparaison entre deux types de données primitifs, elle pourra donc être faite avec « < », « > » et « == ».
  2. 2
    Créez les objets de temps de type long. Avant de pouvoir comparer les dates, il vous faut créer des entiers de type long (ou « long integers ») avec les données provenant des objets Date précédemment créés. Coup de chance, la méthode getTime() fera presque tout le travail pour vous.
      long time1 = getTime(date1); //déclare la primitive time1 à partir de date1
      long time2 = getTime(date2); //déclare la  primitive time2 à partir de date2
      
  3. 3
    Faites une comparaison « moins que ». Servez-vous du symbole « moins que » (<) afin de comparer deux valeurs d'entiers. Comme time1 est inférieur à time 2, le premier message devrait bien s'afficher. La condition « else » est incluse pour avoir une syntaxe correcte.
      if(time1 < time2){
      System.out.println("date1 se situe avant date2"); //s'affichera car time1 <time2
      }
      else{
      System.out.println("date1 ne se situe pas avant date2");
      }
      
  4. 4
    Faites une comparaison « plus que ». Servez-vous du symbole « plus que » (<) afin de comparer deux valeurs d'entiers. Comme time1 est supérieur à time 2, le premier message devrait bien s'afficher. La condition « else » est incluse pour avoir une syntaxe correcte.
      if(time2 > time1){
      System.out.println("date2 se situe après date1"); //s'affichera car time2 > time1 
      }
      else{
      System.out.println("date2 ne se situe pas après date1");
      }
      
  5. 5
    Faites une comparaison d'égalité. Servez-vous du symbole de vérification d'égalité (==) pour comparer deux valeurs d'entiers et savoir si elles sont égales. Comme time1 est égal à time 3, le premier message devrait bien s'afficher. Si le code parvient à la condition else, cela veut dire que les temps ne sont pas égaux.[4]
      if(time1 == time2){
      System.out.println("les dates sont égales");
      }
      else{
      System.out.println("les dates ne sont pas égales"); //s'affichera car time1 != time2
      }
      
    Publicité

À propos de ce wikiHow

wikiHow est un wiki, ce qui veut dire que de nombreux articles sont rédigés par plusieurs auteurs(es). Pour créer cet article, des auteur.e.s volontaires ont participé à l'édition et à l'amélioration. Cet article a été consulté 32 278 fois.
Catégories: Informatique
Publicité