Er zijn verschillende manieren om Java-datums te vergelijken. Intern wordt een datum weergegeven als een (lang) tijdstip -- het aantal milliseconden dat is verstreken sinds 1 januari 1970. In Java is Datum een object, wat betekent dat het meerdere methoden voor vergelijking bevat. Elke methode om twee datums te vergelijken, zal in wezen de tijden van de datums vergelijken.
Stappen
Methode 1 van 4: CompareTo. gebruiken
Stap 1. Gebruik CompareTo
Datum implementeert Vergelijkbaar en dus kunnen twee datums direct worden vergeleken met de methode CompareTo. Als de datums voor hetzelfde tijdstip zijn, retourneert de methode nul. Als de datum die wordt vergeleken vóór het datumargument valt, wordt een waarde kleiner dan nul geretourneerd. Als de datum die wordt vergeleken na het datumargument valt, wordt een waarde groter dan nul geretourneerd. Als de datums gelijk zijn, wordt de waarde 0 geretourneerd.
Stap 2. Maak de datumobjecten
U moet elk datumobject maken voordat u ze kunt vergelijken. Een manier om dit te doen is door de klasse SimpleDateFormat te gebruiken. Het zorgt voor een gemakkelijke invoer van datumwaarden in datumobjecten.
SimpleDateFormat sdf = nieuw SimpleDateFormat("jjjj-MM-dd"); // Voor het declareren van waarden in nieuwe datumobjecten. gebruik dezelfde datumnotatie bij het maken van datums Date date1 = sdf.parse("1995-02-23"); //date1 is 23 februari 1995 Datum date2 = sdf.parse ("2001-10-31"); //date2 is 31 oktober 2001 Datum date3 = sdf.parse("1995-02-23"); //datum3 is 23 februari 1995
Stap 3. Vergelijk de datumobjecten
De onderstaande code toont u elk geval - kleiner dan, gelijk aan en groter dan.
datum1.vergelijkenTo(datum2); //date1 < date2, retourneert minder dan 0 date2.compareTo(date1); //date2 > date1, retourneert groter dan 0 date1.compareTo(date3); // date1 = date3, dus zal 0 naar console afdrukken
Methode 2 van 4: Gelijk aan, na en vóór gebruiken
Stap 1. Gebruik gelijken, erna en ervoor
Datums kunnen worden vergeleken met de gelijken, na en vóór methoden. Als twee datums voor hetzelfde tijdstip zijn, retourneert de methode equals true. In de voorbeelden worden eerder gemaakte datums uit de methode CompareTo gebruikt.
Stap 2. Vergelijk met behulp van de before-methode
De onderstaande code toont een waar en onwaar geval. Als datum1 vóór datum2 ligt, retourneert before waar. Als dit niet het geval is, retourneert before false.
Systeem.uit.print(datum1.voor(datum2)); // drukt true af System.out.print (date2.before (date2)); // drukt vals af
Stap 3. Vergelijk met behulp van de na-methode
De onderstaande code toont een waar en onwaar geval. Als date2 na datum1 valt, wordt na true geretourneerd. Als dit niet het geval is, wordt na het retourneren false weergegeven.
System.out.print(date2.after(date1));//prints true System.out.print(date1.after(date2));//prints false
Stap 4. Vergelijk met de equals-methode
De onderstaande code toont een waar en onwaar geval. Als de datums gelijk zijn, retourneert gelijk aan waar. Als dit niet het geval is, retourneert equals false.
System.out.print(date1.equals(date3));//prints true System.out.print(date1.equals(date2));//prints false
Methode 3 van 4: De kalenderklasse gebruiken
Stap 1. Gebruik de kalender
De kalenderklasse heeft ook de methodes CompareTo, equals, after en before die op dezelfde manier werken als hierboven beschreven voor de dateklasse. Dus als de datuminformatie in een kalender wordt bewaard, is het niet nodig om de datum te extraheren om alleen een vergelijking uit te voeren.
Stap 2. Maak exemplaren van Agenda
Om de Calendar-methoden te gebruiken, hebt u enkele Calendar-instanties nodig. Gelukkig kun je gewoon de tijden halen uit de reeds gemaakte Date-instanties.
Kalender cal1 = Kalender.getInstance(); // verklaart cal1 Kalender cal2 = Calendar.getInstance (); // verklaart cal2 Kalender cal3 = Calendar.getInstance (); // verklaart cal3 cal1.setTime (date1); // past datum toe op cal1 cal2.setTime (date2); cal3.setTime(datum3);
Stap 3. Vergelijk cal1 en cal2 met eerder
De onderstaande code zou true moeten afdrukken, aangezien cal1 vóór cal2 is.
Systeem.uit.print(cal1.before(cal2)); // zal waar afdrukken
Stap 4. Vergelijk cal1 en cal2 met after
De onderstaande code moet false afdrukken, aangezien cal1 vóór cal2 is.
Systeem.uit.print(cal1.after(cal2)); // drukt vals af
Stap 5. Vergelijk cal1 en cal2 met gelijken
De onderstaande code toont een voorbeeld van zowel een waar als onwaar geval. De voorwaarde is afhankelijk van de agenda-instanties die worden vergeleken. De code moet "true" en vervolgens "false" op de volgende regel afdrukken.
Systeem.uit.println(cal1.equals(cal3)); // drukt waar af: cal1 == cal3 System.out.print (cal1.equals (cal2)); // drukt onwaar af: cal1 != cal2
Methode 4 van 4: GetTime gebruiken
Stap 1. Gebruik getTime
Het is ook mogelijk om het tijdstip van twee datums direct te vergelijken, hoewel elk van de voorgaande benaderingen waarschijnlijk beter leesbaar is en dus de voorkeur verdient. Dit zal een vergelijking zijn van twee primitieve datatypes, dus het kan gedaan worden met "", en "==".
Stap 2. Maak de oude objecten
Voordat u de datums kunt vergelijken, moet u lange gehele getallen maken met de gegevens van de eerder gemaakte Date-objecten. Gelukkig zal de methode getTime() het meeste werk voor je doen.
lange tijd1 = getTime(datum1); // verklaart primitieve time1 van date1 long time2 = getTime(date2); // verklaart primitieve tijd2 vanaf datum2
Stap 3. Doe een minder dan vergelijking
Gebruik het kleiner dan-symbool (<) om deze twee gehele getallen te vergelijken. Aangezien tijd 1 kleiner is dan tijd 2, zou het eerste bericht moeten worden afgedrukt. De else-instructie is opgenomen voor de juiste syntaxis.
if(time1 < time2){ System.out.println("datum1 is voor datum2"); //zal afdrukken sinds time1 <time2 } else{ System.out.println ("datum1 is niet vóór datum2"); }
Stap 4. Doe een groter dan vergelijking
Gebruik het groter dan-symbool (>) om deze twee gehele waarden te vergelijken. Aangezien tijd 1 groter is dan tijd 2, zou het eerste bericht moeten worden afgedrukt. De else-instructie is opgenomen voor de juiste syntaxis.
if(time2 > time1){ System.out.println("datum2 is na datum1"); // zal afdrukken sinds time2 > time1 } else{ System.out.println ("datum2 is niet na datum1"); }
Stap 5. Doe een is gelijk aan vergelijking
Gebruik het symbool om te controleren op gelijkheid (==) om deze twee gehele waarden op gelijkheid te vergelijken. Aangezien tijd1 gelijk is aan tijd3, zou het eerste bericht moeten worden afgedrukt. Als het programma bij het else-statement komt, betekent dit dat de tijden niet gelijk zijn.
if(time1 == time2){ System.out.println("de datums zijn gelijk"); } else{ System.out.println("de datums zijn niet gelijk"); //wordt afgedrukt sinds time1!= time2}