4 načina da uporedite dva datuma na Javi

Sadržaj:

4 načina da uporedite dva datuma na Javi
4 načina da uporedite dva datuma na Javi

Video: 4 načina da uporedite dva datuma na Javi

Video: 4 načina da uporedite dva datuma na Javi
Video: How to Make a Coloring Book with FREE Art - KDP Self Publishing 2024, Marš
Anonim

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

4301351 1
4301351 1

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.

4301351 2
4301351 2

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

4301351 3
4301351 3

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

4301351 4
4301351 4

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.

4301351 5
4301351 5

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

4301351 6
4301351 6

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

4301351 7
4301351 7

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

4301351 8
4301351 8

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.

4301351 9
4301351 9

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);

4301351 10
4301351 10

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

4301351 11
4301351 11

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

4301351 12
4301351 12

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

4301351 13
4301351 13

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 "==".

4301351 14
4301351 14

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

4301351 15
4301351 15

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"); }

4301351 16
4301351 16

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"); }

4301351 17
4301351 17

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}

Preporučuje se: