Java kuupäevade võrdlemiseks on erinevaid viise. Sisemiselt on kuupäev kujutatud (pika) ajahetkena – millisekundite arvuna, mis on möödunud 1. jaanuarist 1970. Javas on kuupäev objekt, mis tähendab, et see sisaldab mitut võrdlusmeetodit. Mis tahes meetod kahe kuupäeva võrdlemiseks võrdleb sisuliselt kuupäevade aegu.
1
Kasutage Võrdle. Date rakendab Comparable
2
Looge kuupäevaobjektid. Enne nende võrdlemise alustamist peate looma iga kuupäevaobjekti. Üks võimalus selleks on kasutada klassi SimpleDateFormat. See võimaldab kuupäevaväärtuste hõlpsat sisestamist kuupäevaobjektidesse. SimpleDateFormat sdf = new SimpleDateFormat(“aaaa-KK-pp”); //Uutes kuupäevaobjektides väärtuste deklareerimiseks. kasutage kuupäevade loomisel sama kuupäevavormingutDate date1 = sdf.parse(“1995-02-23”); //date1 on 23. veebruar 1995Date date2 = sdf.parse(“2001-10-31”); //date2 on 31. oktoober 2001Kuupäev date3 = sdf.parse(“1995-02-23”); //date3 on 23. veebruar 1995
3
Võrrelge kuupäevaobjekte. Allolev kood näitab teile iga juhtumit – väiksem kui, võrdne ja suurem kui. kuupäev1.võrdleTo(kuupäev2); //kuupäev1 < kuupäev2, tagastab vähem kui 0kuupäev2.võrdleTo(kuupäev1); //kuupäev2 > kuupäev1, tagastab suurema kui 0kuupäev1.võrdleTo(kuupäev3); //kuupäev1 = kuupäev3, seega prinditakse konsooli 0
4
Kasuta võrdub, pärast ja enne. Kuupäevi saab võrrelda meetoditega võrdsed, pärast ja enne. Kui kaks kuupäeva on sama ajahetke kohta, tagastab võrdsusmeetod tõene. Näidetes kasutatakse võrdlemise meetodiga varem loodud kuupäevi.
5
Võrrelge eelneva meetodi abil. Allolev kood näitab tõest ja vale juhtumit. Kui kuupäev1 on enne kuupäeva2, tagastab enne tõene. Kui see pole nii, tagastab enne vale. System.out.print(date1.before(date2)); //prindib trueSystem.out.print(date2.before(date2)); //prindib vale
6
Võrrelge järelmeetodit kasutades. Allolev kood näitab tõest ja vale juhtumit. Kui kuupäev2 on pärast kuupäeva1, tagastab after true. Kui ei ole, tagastab pärast vale. System.out.print(date2.after(date1));//prindib trueSystem.out.print(date1.after(date2));//prindib vale
7
Võrrelge võrdemeetodit kasutades. Allolev kood näitab tõest ja vale juhtumit. Kui kuupäevad on võrdsed, tagastab võrdsus tõene. Kui need ei ole nii, tagastab võrdne vale. System.out.print(date1.equals(date3));//prindib trueSystem.out.print(date1.equals(date2));//prindib vale
8
Kasutage kalendrit. Kalendriklassis on ka võrdlusTo, võrdub, pärast ja enne meetodid, mis töötavad samamoodi nagu ülalpool kuupäevaklassi puhul kirjeldatud. Seega, kui kuupäevateavet hoitakse kalendris, ei ole vaja kuupäeva lihtsalt võrdluse tegemiseks välja võtta.
9
Looge kalendri eksemplare. Kalendri meetodite kasutamiseks vajate mõnda kalendri eksemplari. Õnneks saate lihtsalt ajad juba loodud kuupäeva eksemplaridest haarata. Calendar cal1 = Calendar.getInstance(); //deklareerib cal1 Calendar cal2 = Calendar.getInstance(); //deklareerib cal2Calendar cal3 = Calendar.getInstance(); //deklareerib cal3cal1.setTime(date1); //rakendab kuupäeva cal1cal2.setTime(date2);cal3.setTime(date3);
10
Võrrelge cal1 ja cal2, kasutades varem. Allolev kood peaks printima tõene, kuna cal1 on enne cal2. System.out.print(cal1.before(cal2)); //prindib tõene
11
Võrrelge cal1 ja cal2 kasutades after. Allolev kood peaks printima vale, kuna cal1 on enne cal2. System.out.print(cal1.after(cal2)); //prindib vale
12
Võrrelge cal1 ja cal2 kasutades võrdseid. Allolev kood näitab nii tõese kui ka vale juhtumi näidet. Tingimus sõltub võrreldavatest kalendrijuhtumitest. Kood peaks järgmisele reale trükkima “true” ja seejärel “false”. System.out.println(cal1.equals(cal3)); //prindib tõene: cal1 == cal3System.out.print(cal1.equals(cal2)); //prindib vale: cal1 != cal2
13
Kasutage getTime’i. Samuti on võimalik vahetult võrrelda kahe kuupäeva ajahetke, kuigi mõni eelnev lähenemine on tõenäoliselt loetavam ja seetõttu eelistatavam. See on kahe primitiivse andmetüübi võrdlus, nii et seda saab teha “<", "">” ja “==” abil.
14
Looge pikaajalisi objekte. Enne kui saate kuupäevi võrrelda, peate eelnevalt loodud kuupäevaobjektide andmetega looma pikad täisarvud. Õnneks teeb getTime() meetod suurema osa tööst teie eest ära. pikk aeg1 = hankiAeg(kuupäev1); //deklareerib primitiivse aja1 kuupäevast1pikk aeg2 = getTime(kuupäev2); //deklareerib primitiivse aja2 kuupäevast2
15
Tehke vähem kui võrdlus. Kasutage nende kahe täisarvu võrdlemiseks sümbolit vähem kui (<). Kuna aeg1 on väiksem kui aeg 2, tuleks esimene teade printida. Avaldus else on lisatud õige süntaksi jaoks. if(time1 < time2){System.out.println("kuupäev1 on enne kuupäeva2"); //prindib alates kellaajast1
17
Tehke võrdne võrdlus. Kasutage võrdsuse kontrollimiseks sümbolit (==), et võrrelda neid kahte võrdsuse täisarvu. Kuna aeg1 võrdub kellaga3, peaks esimene teade printima. Kui programm jõuab else-lauseni, tähendab see, et ajad ei ole võrdsed.if(time1 == time2){System.out.println(“kuupäevad on võrdsed”);}else{System.out.println(“the kuupäevad ei ole võrdsed”); //prinditakse alates ajast1 != aeg2}