Det finns många sätt att jämföra två datum i programmeringsspråket Java. I datorer representeras ett datum av ett tal (datatypen Long) i tidsenheter - det vill säga antalet millisekunder som har gått sedan 1 januari 1970. I Java är Date ett objekt, vilket betyder att det har flera metoder för att göra jämförelser. Varje metod som används för att jämföra två datum jämför i huvudsak tidsenheterna för de två datumen.
Steg
Metod 1 av 4: Använda comparTo
Steg 1. Använd CompareTo
Date -objektet implementerar Comparable så att 2 datum kan jämföras med varandra direkt med metoden comparTo. Om båda datumen har samma antal i tidsenheter, returnerar metoden noll. Om det andra datumet är mindre än det första returneras ett värde mindre än noll. Om det andra datumet är större än det första, returnerar metoden ett värde som är större än noll. Om båda datumen är desamma returnerar metoden ett nollvärde.
Steg 2. Skapa flera datumobjekt
Du måste skapa flera datumobjekt innan du jämför dem. Ett av de enklaste sätten att göra detta är att använda klassen SimpleDateFormat. Denna klass gör det enkelt att konvertera ett inmatningsdatumvärde till ett datumobjekt.
SimpleDateFormat sdf = nytt SimpleDateFormat ("åååå-MM-dd"). För att deklarera ett värde i ett nytt '' Objektdatum '', använd samma datumformat när du skapar datumet. Datum datum1 = sdf.parse ("1995-02-23"); // datum1 är 23 februari 1995 Datum datum2 = sdf.parse ("2001-10-31"); // datum2 är 31 oktober 2001 Datum datum3 = sdf.parse ("1995-02-23"); // date3 är 23 februari 1995
Steg 3. Jämför datumobjekten
Följande kod visar exempel för varje fall - mindre än, lika med och större än.
date1.compareTo (date2); // date1 <date2, returnerar ett värde mindre än 0 date2.compareTo (date1); // date2> date1, returnerar ett värde större än 0 date1.compareTo (date3); // date1 = date3, så det kommer ut 0 på konsolen
Metod 2 av 4: Använda lika, efter och före
Steg 1. Använd lika, efter och före
Datum kan jämföras med lika, efter och före metoder. Om två datum har samma värde i tid returnerar metoden lika med true. I följande exempel används datumobjektet som skapats i metoden jämförTo till.
Steg 2. Jämför med metoden före
Följande kod visar ett exempelfall som returnerar true och false. Om datum1 är ett datum före datum2 returnerar före -metoden true. Annars returnerar metoden före falsk.
System.out.print (datum1.före (datum2)); // visa värdet '' true '' System.out.print (date2.before (date2)); // returnera värdet '' false ''
Steg 3. Jämför med eftermetoden
Följande kod visar ett exempelfall som returnerar true och false. Om datum2 är datumet efter datum1 returnerar eftermetoden true. Annars returnerar eftermetoden falsk.
System.out.print (date2.after (date1)); // visa värdet '' true '' System.out.print (date1.after (date2)); // visa värdet '' false ''
Steg 4. Jämför med likvärdig metod
Följande kod visar ett exempelfall som returnerar true och false. Om båda datumen är lika, returnerar metoden lika med true. Annars returnerar metoden likvärdig falsk.
System.out.print (date1.equals (date3)); // visa värdet '' true '' System.out.print (date1.equals (date2)); // visa värdet '' false ''
Metod 3 av 4: Använda klass kalender
Steg 1. Använd klass kalender
Kalenderklassen har också jämförelseTo, lika med, efter och före metoder som fungerar på samma sätt som de som beskrivits tidigare för klassen Datum. Så om datuminformationen lagras i en klasskalender behöver du inte extrahera datumet bara för att göra en jämförelse.
Steg 2. Skapa en instans av kalendern
Om du vill använda metoder i klass kalender måste du skapa flera kalenderinstanser. Lyckligtvis kan du använda värdena från en tidigare skapad Date -instans.
Kalender cal1 = Calendar.getInstance (); // deklarera cal1 Kalender cal2 = Calendar.getInstance (); // deklarera cal2 Kalender cal3 = Calendar.getInstance (); // deklarera cal3 cal1.setTime (datum1); // sätt datumet i cal1 cal2.setTime (date2); cal3.setTime (datum3);
Steg 3. Jämför cal1 och cal2 med metoden före
Följande kod matar ut värdet på tr
System.out.print (cal1.before (cal2)); // returnerar värdet '' true ''
Steg 4. Jämför cal1 och cal2 med hjälp av eftermetoden
Följande kod returnerar falskt eftersom cal1 är datumet före cal2.
System.out.print (cal1.after (cal2)); // returnera värdet '' false ''
Steg 5. Jämför cal1 och cal2 med likvärdig metod
Följande kod visar ett exempelfall som returnerar true och false. Tillståndet beror på att kalenderinstansen jämförs. Följande kod returnerar värdet "true" och sedan "false" på nästa rad.
System.out.println (cal1.equals (cal3)); // returnera värdet '' true '': cal1 == cal3 System.out.print (cal1.equals (cal2)); // returnera värdet '' false '': cal1! = cal2
Metod 4 av 4: Använda getTime
Steg 1. Använd getTime
Du kan också direkt jämföra tidsenhetsvärdena för två datum, även om de två föregående metoderna kan vara lättare att läsa och att föredra. På så sätt jämför du två primitiva datatyper så att du kan använda operanderna "" och "==".
Steg 2. Skapa ett tidsobjekt i långt talformat
Innan du kan jämföra datum måste du skapa ett långt heltal från det tidigare skapade datumobjektet. Lyckligtvis kommer metoden getTime () att göra det åt dig.
long time1 = getTime (date1); // förklara primitiv tid1 av datum1 lång tid2 = getTime (datum2); // deklarera primitiv tid2 värde av datum2
Steg 3. Utför en mindre än jämförelse
Använd operandens mindre än (<) för att jämföra dessa två heltalsvärden. Eftersom tid1 är mindre än tid2, visas det första meddelandet. Den andra satsen ingår för att slutföra syntaxen.
if (time1 <time2) {System.out.println ("datum1 är datumet före datum2"); // kommer att visas eftersom time1 <time2} else {System.out.println ("datum1 är inte ett datum före datum2"); }
Steg 4. Utför en större än jämförelse
Använd operanden större än (>) för att jämföra dessa två heltalsvärden. Eftersom tid1 är större än tid2, visas det första meddelandet. Den andra satsen ingår för att slutföra syntaxen.
if (time2> time1) {System.out.println ("datum2 är datumet efter datum1"); // kommer att visas eftersom time2> time1} annars {System.out.println ("datum2 är inte datumet efter datum1"); }
Steg 5. Gör en likvärdig jämförelse
Använd operandfunktionen för att kontrollera lika värden (==) för att jämföra dessa två heltal. Eftersom tid1 är lika med tid3 kommer det första meddelandet att visas. Om programflödet går in i annat -satsen betyder det att de två gångerna inte har samma värde.
if (time1 == time2) {System.out.println ("båda datumen är desamma"); } else {System.out.println ("Den första är inte densamma som den andra"); // visas eftersom time1! = time2}