Il existe différentes manières de comparer les dates Java. En interne, une date est représentée comme un point (long) dans le temps - le nombre de millisecondes qui se sont é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 de comparaison de deux dates comparera essentiellement les heures des dates.
Pas
Méthode 1 sur 4: Utilisation de compareTo
Étape 1. Utilisez compareTo
Date implémente Comparable et ainsi deux dates peuvent être comparées directement avec la méthode compareTo. Si les dates correspondent au même moment, la méthode renvoie zéro. Si la date comparée est antérieure à l'argument date, une valeur inférieure à zéro est renvoyée. Si la date comparée est postérieure à l'argument date, une valeur supérieure à zéro est renvoyée. Si les dates sont égales, une valeur de 0 est renvoyée.
Étape 2. Créez les objets de date
Vous devrez créer chaque objet date avant de pouvoir commencer à les comparer. Une façon de procéder consiste à utiliser la classe SimpleDateFormat. Il permet une entrée facile des valeurs de date dans des objets de date.
SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-jj"); //Pour déclarer des valeurs dans les nouveaux objets de date. utiliser le même format de date lors de la création de dates Date date1 = sdf.parse("1995-02-23"); //date1 est le 23 février 1995 Date date2 = sdf.parse("2001-10-31"); //date2 est le 31 octobre 2001 Date date3 = sdf.parse("1995-02-23"); //date3 est le 23 février 1995
Étape 3. Comparez les objets de date
Le code ci-dessous vous montrera chaque cas - inférieur à, égal et supérieur à.
date1.comparerÀ(date2); //date1 < date2, renvoie moins de 0 date2.compareTo(date1); //date2 > date1, renvoie une valeur supérieure à 0 date1.compareTo(date3); //date1 = date3, donc affichera 0 sur la console
Méthode 2 sur 4: Utilisation de Equals, After et Before
Étape 1. Utilisez des égaux, après et avant
Les dates peuvent être comparées avec les méthodes égales, après et avant. Si deux dates correspondent au même moment, la méthode equals renverra true. Les exemples utiliseront des dates précédemment créées à partir de la méthode compareTo.
Étape 2. Comparez en utilisant la méthode avant
Le code ci-dessous montre un cas vrai et faux. Si date1 est avant date2, avant renvoie vrai. Si ce n'est pas le cas, before renvoie false.
System.out.print(date1.before(date2)); //imprime true System.out.print(date2.before(date2)); // imprime faux
Étape 3. Comparez en utilisant la méthode après
Le code ci-dessous montre un cas vrai et faux. Si date2 est postérieure à date1, after renvoie true. Si ce n'est pas le cas, after renvoie false.
System.out.print(date2.after(date1));//imprime true System.out.print(date1.after(date2));//imprime false
Étape 4. Comparez en utilisant la méthode d'égalité
Le code ci-dessous montre un cas vrai et faux. Si les dates sont égales, equals renvoie true. Si ce n'est pas le cas, equals renvoie false.
System.out.print(date1.equals(date3));//imprime true System.out.print(date1.equals(date2));//imprime false
Méthode 3 sur 4: Utilisation de la classe Calendar
Étape 1. Utilisez le calendrier
La classe de calendrier a également des méthodes compareTo, equals, after et before qui fonctionnent de la même manière que celle décrite ci-dessus pour la classe de date. Ainsi, si les informations de date sont contenues dans un calendrier, il n'est pas nécessaire d'extraire la date uniquement pour effectuer une comparaison.
Étape 2. Créez des instances de Calendrier
Pour utiliser les méthodes Calendar, vous aurez besoin de quelques instances Calendar. Heureusement, vous pouvez simplement récupérer les heures des instances de date déjà créées.
Calendrier call1 = Calendar.getInstance(); //déclare cal1 Calendar cal2 = Calendar.getInstance(); //déclare cal2 Calendrier cal3 = Calendar.getInstance(); //déclare cal3 cal1.setTime(date1); // applique la date à call1 cal2.setTime(date2); cal3.setTime(date3);
Étape 3. Comparez cal1 et cal2 en utilisant avant
Le code ci-dessous doit afficher true puisque cal1 est avant cal2.
System.out.print(cal1.before(cal2)); // affichera vrai
Étape 4. Comparez cal1 et cal2 en utilisant après
Le code ci-dessous doit afficher false puisque cal1 est avant cal2.
System.out.print(cal1.after(cal2)); // imprime faux
Étape 5. Comparez cal1 et cal2 en utilisant des valeurs égales
Le code ci-dessous montrera un exemple de cas vrai et faux. La condition dépend des instances de calendrier comparées. Le code doit afficher "true", puis "false" sur la ligne suivante.
System.out.println(cal1.equals(cal3)); //imprime vrai: cal1 == cal3 System.out.print(cal1.equals(cal2)); // affiche false: cal1 != cal2
Méthode 4 sur 4: Utilisation de getTime
Étape 1. Utilisez getTime
Il est également possible de comparer directement le moment de deux dates, bien que l'une des approches précédentes soit susceptible d'être plus lisible et donc préférable. Ce sera une comparaison de deux types de données primitifs, donc cela peut être fait avec "", et "==".
Étape 2. Créez les objets de longue durée
Avant de pouvoir comparer les dates, vous devez créer des entiers longs avec les données des objets Date précédemment créés. Heureusement, la méthode getTime() fera la plupart du 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
Étape 3. Faites une comparaison inférieure
Utilisez le symbole inférieur à (<) pour comparer ces deux valeurs entières. Étant donné que time1 est inférieur à time 2, le premier message doit s'imprimer. L'instruction else est incluse pour une syntaxe correcte.
if(time1 < time2){ System.out.println("date1 est avant date2"); // imprimera depuis time1 <time2 } else{ System.out.println("date1 n'est pas avant date2"); }
Étape 4. Faites une comparaison supérieure
Utilisez le symbole supérieur à (>) pour comparer ces deux valeurs entières. Étant donné que time1 est supérieur à time 2, le premier message doit s'imprimer. L'instruction else est incluse pour une syntaxe correcte.
if(time2 > time1){ System.out.println("date2 est après date1"); // imprimera depuis time2 > time1 } else{ System.out.println("date2 n'est pas après date1"); }
Étape 5. Faites une comparaison égale
Utilisez le symbole pour vérifier l'égalité (==) pour comparer ces deux valeurs entières pour l'égalité. Puisque time1 est égal à time3, le premier message doit s'imprimer. Si le programme atteint l'instruction else, cela signifie que les temps ne sont pas égaux.
if(time1 == time2){ System.out.println("les dates sont égales"); } else{ System.out.println("les dates ne sont pas égales"); //s'imprimera depuis time1 != time2 }