Postoje različiti načini za usporedbu Java datuma. Interno, datum je predstavljen kao (duga) tačka u vremenu - broj milisekundi koje su protekle od 1. januara 1970. U Javi je Date objekt, što znači da uključuje više metoda za poređenje. Svaka metoda upoređivanja dva datuma će u suštini uporediti datume.
Koraci
Metoda 1 od 4: Korištenje compareTo
Korak 1. Koristite compareTo
Datum implementira Uporedivo, pa se dva datuma mogu direktno uporediti sa metodom compareTo. Ako su datumi za isti trenutak u vremenu, metoda vraća nulu. Ako je datum koji se uspoređuje prije datumskog argumenta, vraća se vrijednost manja od nule. Ako je datum koji se uspoređuje iza datumskog argumenta, vraća se vrijednost veća od nule. Ako su datumi jednaki, vraća se vrijednost 0.
Korak 2. Kreirajte objekte datuma
Morat ćete stvoriti svaki objekt datuma prije nego ih počnete uspoređivati. Jedan od načina da to učinite je upotreba klase SimpleDateFormat. Omogućava 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 kreiranju datuma Date date1 = sdf.parse ("1995-02-23"); // datum1 je 23. februar 1995. Datum datum2 = sdf.parse ("2001-10-31"); // datum2 je 31. oktobar 2001. Datum datum3 = sdf.parse ("1995-02-23"); // datum3 je 23. februar 1995. godine
Korak 3. Uporedite 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 uporediti s jednakim metodama nakon i prije. Ako su dva datuma za isti trenutak, metoda equals će vratiti vrijednost true. Primjeri će koristiti prethodno kreirane datume iz metode compareTo.
Korak 2. Uporedite koristeći prethodnu metodu
Donji kôd prikazuje istinit i lažan slučaj. Ako je date1 ispred date2, prije se vraća true. Ako nije, prije se vraća false.
System.out.print (date1.before (date2)); // ispisuje pravi System.out.print (date2.before (date2)); // ispisuje false
Korak 3. Uporedite metodom after
Donji kôd prikazuje istinit i lažan slučaj. Ako je datum2 iza datuma1, poslije vraća true. Ako nije, after vraća false.
System.out.print (date2.after (date1)); // ispisuje istinit System.out.print (date1.after (date2)); // ispisuje false
Korak 4. Uporedite 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 klase Kalendar
Korak 1. Koristite kalendar
Klasa kalendara takođe ima metode compareTo, equals, after i before koje funkcionišu 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. Kreirajte instance kalendara
Da biste koristili metode kalendara, trebat će vam nekoliko instanci kalendara. Na sreću, možete samo uzeti vremena iz već kreiranih instanci Date.
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. Uporedite cal1 i cal2 koristeći prethodno
Donji kôd bi trebao ispisati true jer je cal1 prije cal2.
System.out.print (cal1.before (cal2)); // ispisuje true
Korak 4. Uporedite cal1 i cal2 koristeći after
Donji kod bi trebao ispisati false jer je cal1 prije cal2.
System.out.print (cal1.after (cal2)); // ispisuje false
Korak 5. Uporedite cal1 i cal2 koristeći jednako
Kod ispod prikazuje primjer istinitog i lažnog slučaja. Uslov zavisi od kalendarskih instanci koje se upoređuju. Kod bi trebao u sljedećem retku ispisati "true", zatim "false".
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. Koristite getTime
Moguće je i direktno uporediti vremensko razdoblje dva datuma, iako je vjerovatno 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. Kreirajte dugotrajne objekte
Da biste mogli usporediti datume, morate stvoriti dugačke 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 poređenja
Upotrijebite simbol manje od (<) za usporedbu ove dvije cijele vrijednosti. Pošto je vrijeme1 manje od vremena 2, prva poruka bi se trebala odštampati. Naredba else je uključena za pravilnu sintaksu.
if (time1 <time2) {System.out.println ("date1 is before date2"); // štampaće se od time1 <time2} else {System.out.println ("datum1 nije pre datuma2"); }
Korak 4. Učinite više od poređenja
Upotrijebite simbol veći od (>) za usporedbu ove dvije cijele vrijednosti. Pošto je vrijeme1 veće od vremena 2, prva poruka bi se trebala odštampati. Naredba else je uključena za pravilnu sintaksu.
if (time2> time1) {System.out.println ("date2 is after date1"); // štampaće se od time2> time1} else {System.out.println ("datum2 nije posle datuma1"); }
Korak 5. Uporedite jednako
Upotrijebite simbol za provjeru jednakosti (==) za usporedbu ove dvije cjelobrojne vrijednosti za jednakost. Pošto je vrijeme1 jednako vremenu3, prva poruka bi se trebala odštampati. 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"); // štampat će se od time1! = time2}