Es gibt verschiedene Möglichkeiten, Java-Daten zu vergleichen. Intern wird ein Datum als (langer) Zeitpunkt dargestellt – die Anzahl der Millisekunden, die seit dem 1. Januar 1970 verstrichen sind. In Java ist Date ein Objekt, dh es enthält mehrere Vergleichsmethoden. Jede Methode zum Vergleichen zweier Datumsangaben vergleicht im Wesentlichen die Zeiten der Datumsangaben.
Schritte
Methode 1 von 4: Verwenden von CompareTo
Schritt 1. Verwenden Sie CompareTo
Date implementiert Comparable, sodass zwei Datumsangaben direkt mit der Methode CompareTo verglichen werden können. Wenn die Datumsangaben für denselben Zeitpunkt gelten, gibt die Methode null zurück. Wenn das verglichene Datum vor dem Datumsargument liegt, wird ein Wert kleiner als Null zurückgegeben. Wenn das verglichene Datum nach dem Datumsargument liegt, wird ein Wert größer Null zurückgegeben. Wenn die Daten gleich sind, wird der Wert 0 zurückgegeben.
Schritt 2. Erstellen Sie die Datumsobjekte
Sie müssen jedes Datumsobjekt erstellen, bevor Sie mit dem Vergleich beginnen können. Eine Möglichkeit hierfür besteht darin, die SimpleDateFormat-Klasse zu verwenden. Es ermöglicht die einfache Eingabe von Datumswerten in Datumsobjekte.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //Zur Deklaration von Werten in neuen Datumsobjekten. Verwenden Sie dasselbe Datumsformat beim Erstellen von Datumsangaben Datum date1 = sdf.parse("1995-02-23"); //Datum1 ist der 23. Februar 1995 Datum Datum2 = sdf.parse("2001-10-31"); //date2 ist der 31. Oktober 2001 Date date3 = sdf.parse("1995-02-23"); //Datum3 ist der 23. Februar 1995
Schritt 3. Vergleichen Sie die Datumsobjekte
Der folgende Code zeigt Ihnen jeden Fall - kleiner als, gleich und größer als.
date1.compareTo(date2); //date1 < date2, gibt weniger als 0 zurück date2.compareTo(date1); //date2 > date1, gibt größer als 0 zurück date1.compareTo(date3); //date1 = date3, wird also 0 auf die Konsole ausgeben
Methode 2 von 4: Verwenden von Equals, After und Before
Schritt 1. Verwenden Sie gleich, nach und vor
Datumsangaben können mit den Equals-, After- und Before-Methoden verglichen werden. Wenn zwei Datumsangaben für denselben Zeitpunkt gelten, gibt die equals-Methode true zurück. In den Beispielen werden zuvor erstellte Datumsangaben aus der Methode CompareTo verwendet.
Schritt 2. Vergleichen Sie mit der Vorher-Methode
Der folgende Code zeigt einen wahren und einen falschen Fall. Wenn date1 vor date2 liegt, gibt before true zurück. Ist dies nicht der Fall, gibt before false zurück.
System.out.print (date1.before(date2)); // gibt true aus System.out.print (date2.before (date2)); // druckt falsch
Schritt 3. Vergleichen Sie mit der Nach-Methode
Der folgende Code zeigt einen wahren und einen falschen Fall. Wenn date2 nach date1 liegt, gibt after true zurück. Ist dies nicht der Fall, gibt after false zurück.
System.out.print(date2.after(date1)); //druckt true System.out.print(date1.after(date2)); //druckt false
Schritt 4. Vergleichen Sie mit der Gleichheitsmethode
Der folgende Code zeigt einen wahren und einen falschen Fall. Wenn die Daten gleich sind, gibt equals true zurück. Ist dies nicht der Fall, gibt equals false zurück.
System.out.print (date1.equals (date3)); // druckt true System.out.print (date1.equals (date2)); // druckt false
Methode 3 von 4: Verwenden der Kalenderklasse
Schritt 1. Verwenden Sie den Kalender
Die Kalenderklasse verfügt außerdem über die Methoden CompareTo, equals, after und before, die genauso funktionieren wie oben für die Date-Klasse beschrieben. Wenn die Datumsinformationen in einem Kalender gespeichert werden, ist es also nicht erforderlich, das Datum zu extrahieren, nur um einen Vergleich durchzuführen.
Schritt 2. Erstellen Sie Kalenderinstanzen
Um die Kalendermethoden zu verwenden, benötigen Sie einige Kalenderinstanzen. Glücklicherweise können Sie die Zeiten einfach aus den bereits erstellten Datumsinstanzen abrufen.
Kalender cal1 = Calendar.getInstance(); //deklariert cal1 Kalender cal2 = Calendar.getInstance(); //deklariert cal2 Kalender cal3 = Calendar.getInstance(); // deklariert cal3 cal1.setTime (date1); // wendet Datum auf cal1 an cal2.setTime (date2); cal3.setTime(Datum3);
Schritt 3. Vergleichen Sie cal1 und cal2 mit vorher
Der folgende Code sollte true ausgeben, da cal1 vor cal2 liegt.
System.out.print (cal1.before (cal2)); // wird true ausgeben
Schritt 4. Vergleichen Sie cal1 und cal2 mit after
Der folgende Code sollte false ausgeben, da cal1 vor cal2 liegt.
System.out.print (cal1.after (cal2)); // druckt falsch
Schritt 5. Vergleichen Sie cal1 und cal2 mit Gleichen
Der folgende Code zeigt ein Beispiel für einen wahren und einen falschen Fall. Die Bedingung hängt von den verglichenen Kalenderinstanzen ab. Der Code sollte "true" ausgeben, dann "false" in der nächsten Zeile.
System.out.println(cal1.equals(cal3)); // gibt wahr aus: cal1 == cal3 System.out.print(cal1.equals(cal2)); // gibt false aus: cal1 != cal2
Methode 4 von 4: GetTime verwenden
Schritt 1. Verwenden Sie getTime
Es ist auch möglich, den Zeitpunkt zweier Daten direkt zu vergleichen, obwohl jeder der vorherigen Ansätze wahrscheinlich besser lesbar und daher vorzuziehen ist. Dies wird ein Vergleich zweier primitiver Datentypen sein, so dass dies mit "", und "==" erfolgen kann.
Schritt 2. Erstellen Sie die Langzeitobjekte
Bevor Sie die Datumsangaben vergleichen können, müssen Sie mit den Daten aus den zuvor erstellten Datumsobjekten lange Ganzzahlen erstellen. Glücklicherweise erledigt die Methode getTime() die meiste Arbeit für Sie.
lange Zeit1 = getTime(date1); // deklariert primitive time1 von date1 long time2 = getTime(date2); // deklariert primitive time2 von date2
Schritt 3. Machen Sie einen weniger als Vergleich
Verwenden Sie das Kleiner-als-Symbol (<), um diese beiden ganzzahligen Werte zu vergleichen. Da time1 kleiner als time 2 ist, sollte die erste Nachricht gedruckt werden. Die else-Anweisung ist für die richtige Syntax enthalten.
if (time1 < time2) { System.out.println ("Datum1 liegt vor Datum2"); // wird seit time1 <time2 } else{ System.out.println("date1 ist nicht vor date2"); }
Schritt 4. Machen Sie einen größeren Vergleich
Verwenden Sie das Größer-als-Symbol (>), um diese beiden ganzzahligen Werte zu vergleichen. Da time1 größer als time 2 ist, sollte die erste Nachricht gedruckt werden. Die else-Anweisung ist für die richtige Syntax enthalten.
if(time2 > time1) {System.out.println("date2 ist nach date1"); // druckt seit time2 > time1 } else{ System.out.println("date2 ist nicht nach date1"); }
Schritt 5. Führen Sie einen Gleichheitsvergleich durch
Verwenden Sie das Symbol, um auf Gleichheit zu prüfen (==), um diese beiden ganzzahligen Werte auf Gleichheit zu vergleichen. Da time1 gleich time3 ist, sollte die erste Nachricht gedruckt werden. Wenn das Programm zur else-Anweisung gelangt, bedeutet dies, dass die Zeiten nicht gleich sind.
if(time1 == time2){ System.out.println("die Daten sind gleich"); } else{ System.out.println("Die Daten sind nicht gleich"); // wird seit time1 gedruckt!= time2}