Java kuupäevade võrdlemiseks on erinevaid viise. Sisemiselt kujutatakse kuupäeva (pika) ajapunktina - millisekundite arv, mis on möödunud 1. jaanuarist 1970. Java -s on kuupäev objekt, mis tähendab, et see sisaldab mitmeid võrdlusmeetodeid. Iga kahe kuupäeva võrdlemise meetod võrdleb sisuliselt kuupäevade aegu.
Sammud
Meetod 1 /4: võrdluse kasutamine
Samm 1. Kasutage võrdlust
Kuupäev rakendatakse Võrreldav ja seega saab kahte kuupäeva võrrelda otse võrdlusmeetodiga. Kui kuupäevad on samal ajahetkel, tagastab meetod nulli. Kui võrreldav kuupäev on enne kuupäeva argumenti, tagastatakse väärtus, mis on väiksem kui null. Kui võrreldav kuupäev on pärast kuupäeva argumenti, tagastatakse väärtus, mis on suurem kui null. Kui kuupäevad on võrdsed, tagastatakse väärtus 0.
Samm 2. Looge kuupäevaobjektid
Enne nende võrdlemise alustamist peate looma iga kuupäevaobjekti. Üks võimalus seda teha on klassi SimpleDateFormat kasutamine. See võimaldab kuupäevaväärtuste hõlpsat sisestamist kuupäevaobjektidesse.
SimpleDateFormat sdf = uus SimpleDateFormat ("yyyy-MM-dd"); // Väärtuste deklareerimiseks uutes kuupäevaobjektides. kasutage kuupäevade loomisel sama kuupäevavormingut Kuupäev kuupäev1 = sdf.parse ("1995-02-23"); // kuupäev1 on 23. veebruar 1995 Kuupäev kuupäev2 = sdf.parse ("2001-10-31"); // kuupäev2 on 31. oktoober 2001 Kuupäev kuupäev3 = sdf.parse ("1995-02-23"); // kuupäev3 on 23. veebruar 1995
Samm 3. Võrdle kuupäeva objekte
Allolev kood näitab teile iga juhtumit - väiksem, võrdne ja suurem kui.
date1.compareTo (kuupäev2); // kuupäev1 <kuupäev2, tagastab vähem kui 0 date2.compareTo (kuupäev1); // kuupäev2> kuupäev1, tagastab suurema kui 0 date1.compareTo (date3); // kuupäev1 = kuupäev3, nii prinditakse konsoolile 0
Meetod 2/4: võrdsete, pärast ja enne kasutamist
Etapp 1. Kasutage võrdseid, pärast ja enne
Kuupäevi saab võrrelda võrdsete meetoditega, pärast ja enne meetodeid. Kui kaks kuupäeva on sama ajahetke jaoks, tagastab meetod võrdne tõese. Näidetes kasutatakse võrdluse meetodist varem loodud kuupäevi.
Samm 2. Võrrelge, kasutades eelmist meetodit
Allolev kood näitab tõest ja valest juhtumist. Kui kuupäev1 on enne kuupäeva2, tagastab enne tõene. Kui ei, siis tagastab enne väärtuse vale.
System.out.print (date1.before (date2)); // prindib tõese System.out.print (date2.before (date2)); // prindib vale
Samm 3. Võrrelge, kasutades järgnevat meetodit
Allolev kood näitab tõest ja valest juhtumist. Kui kuupäev2 on pärast kuupäeva1, tagastab pärast tõene. Kui ei, siis tagastab pärast väärtust vale.
System.out.print (date2.after (date1)); // prindib tõese System.out.print (date1.after (date2)); // prindib vale
Samm 4. Võrdle võrdsete meetodite abil
Allolev kood näitab tõest ja valest juhtumist. Kui kuupäevad on võrdsed, tagastab võrdne tõene. Kui neid pole, tagastab võrdne vale.
System.out.print (date1.equals (date3)); // prindib tõese System.out.print (date1.equals (date2)); // prindib vale
3. meetod 4 -st: kalendriklassi kasutamine
Samm 1. Kasutage kalendrit
Kalendriklassis on ka võrdlusvõrdlus, võrdne, pärast ja enne meetodeid, mis toimivad samamoodi nagu ülalkirjeldatud kuupäevaklassi puhul. Seega, kui kuupäeva teavet hoitakse kalendris, ei ole vaja võrdluse tegemiseks kuupäeva välja võtta.
Samm 2. Looge kalendri eksemplare
Kalendri meetodite kasutamiseks vajate mõnda kalendri eksemplari. Õnneks saate lihtsalt ajad haarata juba loodud kuupäeva eksemplaridest.
Kalender cal1 = Calendar.getInstance (); // deklareerib cal1 Kalender cal2 = Calendar.getInstance (); // deklareerib cal2 Kalender cal3 = Calendar.getInstance (); // deklareerib cal3 cal1.setTime (date1); // rakendab kuupäeva cal1 cal2.setTime (date2); cal3.setTime (kuupäev3);
Samm 3. Võrrelge cal1 ja cal2, kasutades varem
Allolev kood peaks printima tõene, kuna cal1 on enne cal2.
System.out.print (cal1.before (cal2)); // trükitakse tõsi
Samm 4. Võrrelge cal1 ja cal2, kasutades pärast
Allolev kood peaks printima vale, kuna cal1 on enne cal2.
System.out.print (cal1.after (cal2)); // prindib vale
Samm 5. Võrrelge cal1 ja cal2, kasutades võrdset
Allpool olev kood näitab näidet nii tõese kui ka vale juhtumi kohta. Tingimus sõltub võrreldavatest kalendri juhtumitest. Kood peaks järgmisele reale trükkima "true", seejärel "false".
System.out.println (cal1.equals (cal3)); // prindib tõene: cal1 == cal3 System.out.print (cal1.equals (cal2)); // prindib vale: cal1! = cal2
Meetod 4/4: getTime'i kasutamine
Samm 1. Kasutage getTime'i
Samuti on võimalik otse võrrelda kahe kuupäeva ajahetke, kuigi mõni eelnevatest lähenemisviisidest on tõenäoliselt loetavam ja seega eelistatavam. See on kahe primitiivse andmetüübi võrdlus, nii et seda saab teha "" ja "==".
Samm 2. Looge pikaajalised objektid
Enne kuupäevade võrdlemist peate looma pikad täisarvud varem loodud kuupäevaobjektide andmetega. Õnneks teeb getTime () meetod suurema osa teie eest ära.
pikk aeg1 = getTime (kuupäev1); // deklareerib primitiivse kellaaja1 kuupäevast1 pikk aeg2 = getTime (kuupäev2); // deklareerib primitiivse aja2 alates kuupäevast2
Samm 3. Tehke vähem kui võrdlus
Kasutage sümbolit alla <() nende kahe täisarvu väärtuste võrdlemiseks. Kuna aeg1 on lühem kui aeg 2, peaks esimene teade printima. Õige süntaksi jaoks on lisatud muu avaldus.
if (time1 <time2) {System.out.println ("kuupäev1 on enne kuupäeva2"); // trükitakse alates ajast1 <aeg2} else {System.out.println ("kuupäev1 ei ole enne kuupäeva2"); }
Samm 4. Tehke võrdlusest suurem
Nende kahe täisarvu väärtuste võrdlemiseks kasutage sümbolit (>). Kuna aeg1 on suurem kui aeg 2, tuleks esimene teade printida. Õige süntaksi jaoks on lisatud muu avaldus.
if (time2> time1) {System.out.println ("kuupäev2 on pärast kuupäeva1"); // trükitakse alates ajast2> aeg1} else {System.out.println ("date2 ei ole kuupäeva1 järel"); }
Samm 5. Tehke võrdlus
Kasutage sümbolit võrdsuse kontrollimiseks (==), et võrrelda neid kahte täisväärtuslikku võrdsust. Kuna aeg1 võrdub ajaga3, peaks esimene teade printima. Kui programm jõuab muu avalduseni, tähendab see, et ajad pole võrdsed.
if (time1 == time2) {System.out.println ("kuupäevad on võrdsed"); } else {System.out.println ("kuupäevad pole võrdsed"); // trükitakse alates ajast1! = aeg2}