Postoje različiti načini za usporedbu Java datuma. Interno, datum je predstavljen kao (duga) točka u vremenu - broj milisekundi koje su protekle od 1. siječnja 1970. U Javi je Date objekt, što znači da uključuje više metoda za usporedbu. Bilo koja metoda usporedbe dva datuma bitno će usporediti vrijeme datuma.
Koraci
Metoda 1 od 4: Korištenje compareTo
Korak 1. Upotrijebite compareTo
Datum implementira Usporedivo pa se dva datuma mogu izravno usporediti s metodom compareTo. Ako su datumi za isto vrijeme, metoda vraća nulu. Ako je datum koji se uspoređuje prije argumenta datuma, vraća se vrijednost manja od nule. Ako je datum za usporedbu iza datumskog argumenta, vraća se vrijednost veća od nule. Ako su datumi jednaki, vraća se vrijednost 0.
Korak 2. Stvorite objekte datuma
Morat ćete stvoriti svaki objekt datuma prije nego što ih počnete uspoređivati. Jedan od načina za to je korištenje klase SimpleDateFormat. Omogućuje jednostavan unos vrijednosti datuma u objekte datuma.
SimpleDateFormat sdf = novi SimpleDateFormat ("gggg-MM-dd"); // Za deklariranje vrijednosti u novim objektima datuma. koristiti isti format datuma pri stvaranju datuma Date date1 = sdf.parse ("1995-02-23"); // datum1 je 23. veljače 1995. Datum datum2 = sdf.parse ("2001-10-31"); // datum2 je 31. listopada 2001. Datum datum3 = sdf.parse ("1995-02-23"); // datum3 je 23. veljače 1995. godine
Korak 3. Usporedite objekte datuma
Kod ispod prikazuje svaki slučaj - manji od, jednak i veći od.
date1.compareTo (date2); // date1 <date2, vraća manje od 0 date2.compareTo (date1); // date2> date1, vraća veće od 0 date1.compareTo (date3); // date1 = date3, pa će se ispisati 0 na konzoli
Metoda 2 od 4: Korištenje jednakosti, nakon i prije
Korak 1. Koristite jednako, nakon i prije
Datumi se mogu usporediti s jednakima, nakon i prije metoda. Ako su dva datuma za isto vrijeme, metoda equals vratit će se true. U primjerima će se koristiti prethodno stvoreni datumi iz metode compareTo.
Korak 2. Usporedite pomoću prethodne metode
Donji kôd prikazuje istinit i lažan slučaj. Ako je datum1 prije datuma2, prije se vraća true. Ako nije, prije se vraća false.
System.out.print (datum1.prije (datum2)); // ispisuje pravi System.out.print (date2.before (date2)); // ispisuje false
Korak 3. Usporedite metodom after
Donji kôd prikazuje istinit i lažan slučaj. Ako je datum2 iza datuma1, poslije se vraća true. Ako nije, after vraća false.
System.out.print (date2.after (date1)); // ispisuje pravi System.out.print (date1.after (date2)); // ispisuje false
Korak 4. Usporedite pomoću metode equals
Donji kôd prikazuje istinit i lažan slučaj. Ako su datumi jednaki, equals vraća true. Ako nisu, equals vraća false.
System.out.print (date1.equals (date3)); // ispisuje istinito System.out.print (date1.equals (date2)); // ispisuje false
Metoda 3 od 4: Korištenje razreda Kalendar
Korak 1. Upotrijebite kalendar
Klasa kalendara također ima metode compareTo, equals, after i before koje rade na isti način kao što je gore opisano za datumsku klasu. Dakle, ako se podaci o datumu drže u kalendaru, nema potrebe izdvajati datum samo radi usporedbe.
Korak 2. Izradite instance kalendara
Za korištenje metoda kalendara trebat će vam nekoliko instanci kalendara. Srećom, možete jednostavno uzeti vremena iz već stvorenih instanci datuma.
Kalendar cal1 = Calendar.getInstance (); // deklarira cal1 Kalendar cal2 = Calendar.getInstance (); // deklarira cal2 Kalendar cal3 = Calendar.getInstance (); // deklarira cal3 cal1.setTime (date1); // primjenjuje datum na cal1 cal2.setTime (date2); cal3.setTime (date3);
Korak 3. Usporedite cal1 i cal2 koristeći prethodno
Donji kôd trebao bi ispisati true jer je cal1 prije cal2.
System.out.print (cal1.before (cal2)); // ispisat će se true
Korak 4. Usporedite cal1 i cal2 koristeći after
Donji kôd trebao bi ispisati false jer je cal1 prije cal2.
System.out.print (cal1.after (cal2)); // ispisuje false
Korak 5. Usporedite cal1 i cal2 koristeći jednake vrijednosti
Kod ispod prikazuje primjer istinitog i lažnog slučaja. Uvjet ovisi o kalendarskim instancama koje se uspoređuju. Kôd bi trebao ispisati "true", zatim "false" u sljedećem retku.
System.out.println (cal1.equals (cal3)); // ispisuje true: cal1 == cal3 System.out.print (cal1.equals (cal2)); // ispisuje false: cal1! = cal2
Metoda 4 od 4: Korištenje getTime
Korak 1. Upotrijebite getTime
Također je moguće izravno usporediti vremensku točku dva datuma, iako je vjerojatno da će bilo koji od prethodnih pristupa biti čitljiviji i toliko poželjniji. Ovo će biti usporedba dva primitivna tipa podataka, pa se to može učiniti s "" i "==".
Korak 2. Stvorite dugotrajne objekte
Prije nego što možete usporediti datume, morate stvoriti duge cijele brojeve s podacima iz prethodno stvorenih objekata Date. Srećom, metoda getTime () će odraditi većinu posla umjesto vas.
long time1 = getTime (date1); // deklarira primitivno vrijeme1 od datuma1 dugo vrijeme2 = getTime (datum2); // proglašava primitivno vrijeme2 od datuma2
Korak 3. Učinite manje od usporedbe
Upotrijebite simbol manje od (<) za usporedbu ove dvije cijele vrijednosti. Budući da je vrijeme1 manje od vremena 2, prva bi se poruka trebala ispisati. Izjava else uključena je za pravilnu sintaksu.
if (time1 <time2) {System.out.println ("datum1 je prije datuma2"); // ispisat će se od time1 <time2} else {System.out.println ("datum1 nije prije datuma2"); }
Korak 4. Učinite više od usporedbe
Upotrijebite simbol veći od (>) za usporedbu ove dvije cijele vrijednosti. Budući da je vrijeme1 veće od vremena 2, prva poruka bi se trebala ispisati. Izjava else uključena je za pravilnu sintaksu.
if (time2> time1) {System.out.println ("date2 is after date1"); // ispisat će se od time2> time1} else {System.out.println ("datum2 nije nakon datuma1"); }
Korak 5. Napravite usporedbu jednako
Upotrijebite simbol za provjeru jednakosti (==) za usporedbu ove dvije cijele vrijednosti za jednakost. Budući da je vrijeme1 jednako vremenu3, prva bi se poruka trebala ispisati. Ako program dođe do naredbe else, to znači da vremena nisu jednaka.
if (time1 == time2) {System.out.println ("datumi su jednaki"); } else {System.out.println ("datumi nisu jednaki"); // ispisat će se od time1! = time2}