Il existe de nombreuses façons de comparer deux dates dans le langage de programmation Java. Dans les ordinateurs, une date est représentée par un nombre (le type de données Long) en unités de temps, c'est-à-dire le nombre de millisecondes écoulées depuis le 1er janvier 1970. En Java, Date est un objet, ce qui signifie qu'il a plusieurs méthodes pour faire des comparaisons. Toute méthode utilisée pour comparer deux dates consiste essentiellement à comparer les unités de temps des deux dates.
Étape
Méthode 1 sur 4: Utilisation de compareTo
Étape 1. Utilisez compareTo
L'objet Date implémente Comparable afin que 2 dates puissent être comparées directement avec la méthode compareTo. Si les deux dates ont le même nombre en unités de temps, la méthode renvoie zéro. Si la deuxième date est inférieure à la première, une valeur inférieure à zéro est renvoyée. Si la deuxième date est supérieure à la première, la méthode renvoie une valeur supérieure à zéro. Si les deux dates sont identiques, la méthode renvoie une valeur nulle.
Étape 2. Créez plusieurs objets Date
Vous devez créer plusieurs objets Date avant de les comparer. L'un des moyens les plus simples de le faire est d'utiliser la classe SimpleDateFormat. Cette classe facilite la conversion d'une valeur de date d'entrée en un objet Date.
SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-jj"). Pour déclarer une valeur dans une nouvelle ''Object Date'', utilisez le même format de date lors de la création de la date. 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 Date
Le code suivant vous montrera des exemples pour chaque cas -- inférieur à, égal et supérieur à.
date1.comparerÀ(date2); //date1 < date2, renvoie une valeur inférieure à 0 date2.compareTo(date1); //date2 > date1, renvoie une valeur supérieure à 0 date1.compareTo(date3); //date1 = date3, donc il 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 à l'aide des méthodes equals, after et before. Si deux dates ont la même valeur temporelle, la méthode equals renvoie true. L'exemple suivant utilisera l'objet Date créé dans l'exemple de méthode compareTo.
Étape 2. Comparez avec la méthode précédente
Le code suivant montre un exemple de cas qui renvoie true et false. Si date1 est une date antérieure à date2, la méthode before renvoie true. Sinon, la méthode before renvoie false.
System.out.print(date1.before(date2)); // affiche la valeur ''true'' System.out.print(date2.before(date2)); // renvoie la valeur ''false''
Étape 3. Comparez en utilisant la méthode après
Le code suivant montre un exemple de cas qui renvoie true et false. Si date2 est la date postérieure à date1, la méthode after renvoie true. Sinon, la méthode after renverra false.
System.out.print(date2.after(date1)); // affiche la valeur ''true'' System.out.print(date1.after(date2)); // affiche la valeur ''false''
Étape 4. Comparez avec la méthode d'égalité
Le code suivant montre un exemple de cas qui renvoie true et false. Si les deux dates sont égales, la méthode equals renvoie true. Sinon, la méthode equals renvoie false.
System.out.print(date1.equals(date3)); // affiche la valeur ''true'' System.out.print(date1.equals(date2)); // affiche la valeur ''false''
Méthode 3 sur 4: Utilisation du calendrier de classe
Étape 1. Utilisez le calendrier de la classe
La classe Calendar possède également des méthodes compareTo, equals, after et before qui fonctionnent de la même manière que celles décrites précédemment pour la classe Date. Ainsi, si les informations de date sont stockées dans un calendrier de classe, vous n'avez pas besoin d'extraire la date uniquement pour effectuer une comparaison.
Étape 2. Créez une instance de Calendar
Pour utiliser des méthodes dans Class Calendar, vous devez créer plusieurs instances Calendar. Heureusement, vous pouvez utiliser les valeurs d'une instance Date précédemment créée.
Calendrier call1 = Calendar.getInstance(); //déclarer cal1 Calendrier cal2 = Calendrier.getInstance(); //déclarer cal2 Calendrier cal3 = Calendar.getInstance(); //déclarer cal3 cal1.setTime(date1); //mettre la date dans call1 cal2.setTime(date2); cal3.setTime(date3);
Étape 3. Comparez cal1 et cal2 à l'aide de la méthode avant
Le code suivant affichera la valeur de tr
System.out.print(cal1.before(cal2)); // retournera la valeur ''true''
Étape 4. Comparez cal1 et cal2 à l'aide de la méthode après
Le code suivant renverra false car cal1 est la date avant cal2.
System.out.print(cal1.after(cal2)); // renvoie la valeur ''false''
Étape 5. Comparez cal1 et cal2 en utilisant la méthode d'égalité
Le code suivant montrera un exemple de cas qui renvoie true et false. L'état dépend de l'instance Calendar comparée. Le code suivant renverra la valeur "true", puis "false" sur la ligne suivante.
System.out.println(cal1.equals(cal3)); // renvoie la valeur ''true'': cal1 == cal3 System.out.print(cal1.equals(cal2)); // renvoie la valeur ''false'': cal1 != cal2
Méthode 4 sur 4: Utilisation de getTime
Étape 1. Utilisez getTime
Vous pouvez également comparer directement les valeurs d'unité de temps de deux dates, bien que les deux méthodes précédentes puissent être plus faciles à lire et préférables. De cette façon, vous comparerez 2 types de données primitifs, vous pouvez donc utiliser les opérandes "", et "==".
Étape 2. Créez un objet de temps au format de nombre long
Avant de pouvoir comparer des dates, vous devez créer une valeur Entier long à partir de l'objet Date précédemment créé. Heureusement, la méthode getTime() le fera pour vous.
long time1 = getTime(date1); //déclarer la primitive time1 de date1 long time2 = getTime(date2); //déclare la valeur primitive time2 de date2
Étape 3. Effectuez une comparaison inférieure à
Utilisez l'opérande inférieur à (<) pour comparer ces deux valeurs entières. Puisque time1 est inférieur à time2, le premier message apparaîtra. L'instruction else est incluse pour compléter la syntaxe.
if(time1 < time2){ System.out.println("date1 est la date avant date2"); //s'affichera car time1 < time2 } else{ System.out.println("date1 n'est pas une date antérieure à date2"); }
Étape 4. Effectuez une comparaison supérieure à
Utilisez l'opérande supérieur à (>) pour comparer ces deux valeurs entières. Parce que time1 est supérieur à time2, le premier message apparaîtra. L'instruction else est incluse pour compléter la syntaxe.
if(time2 > time1){ System.out.println("date2 est la date après date1"); //s'affichera parce que time2 > time1 } else{ System.out.println("date2 n'est pas la date après date1"); }
Étape 5. Effectuez une comparaison d'égalité
Utilisez la fonction opérande pour vérifier l'égalité des valeurs (==) pour comparer ces deux entiers. Puisque time1 est égal à time3, le premier message apparaîtra. Si le flux du programme entre dans l'instruction else, cela signifie que les deux temps n'ont pas la même valeur.
if(time1 == time2){ System.out.println("les deux dates sont les mêmes"); } else{ System.out.println("Le 1er n'est pas le même que le 2ème"); //s'affichera car time1 != time2 }