Existujú rôzne spôsoby porovnávania dátumov Java. Dátum je interne reprezentovaný ako (dlhý) časový bod - počet milisekúnd, ktoré uplynuli od 1. januára 1970. V Jave je dátum objekt, čo znamená, že obsahuje viacero spôsobov porovnávania. Akýkoľvek spôsob porovnávania dvoch dátumov v zásade porovná časy dátumov.
Kroky
Metóda 1 zo 4: Použitie funkcie compareTo
Krok 1. Použite porovnávač
Dátum implementuje Porovnateľné, a tak je možné dva dátumy porovnať priamo s metódou porovnania. Ak sú dátumy pre rovnaký časový bod, metóda vráti nulu. Ak je porovnávaný dátum pred argumentom dátumu, vráti sa hodnota menšia ako nula. Ak je porovnávaný dátum za argumentom dátumu, vráti sa hodnota väčšia ako nula. Ak sú dátumy rovnaké, vráti sa hodnota 0.
Krok 2. Vytvorte objekty dátumu
Každý objekt dátumu budete musieť vytvoriť, než ich začnete porovnávať. Jedným zo spôsobov, ako to urobiť, je použiť triedu SimpleDateFormat. Umožňuje ľahké zadávanie hodnôt dátumu do objektov dátumu.
SimpleDateFormat sdf = new SimpleDateFormat ("rrrr-MM-dd"); // Na deklarovanie hodnôt v nových objektoch dátumu. pri vytváraní dátumov použite rovnaký formát dátumu Dátum dátumu1 = sdf.parse ("1995-02-23"); // date1 je 23. február 1995 Dátum date2 = sdf.parse ("2001-10-31"); // date2 je 31. október 2001 Dátum date3 = sdf.parse ("1995-02-23"); // date3 je 23. február 1995
Krok 3. Porovnajte objekty s dátumom
Nasledujúci kód vám ukáže každý prípad - menej ako, rovnako a viac ako.
date1.compareTo (dátum2); // date1 <date2, vráti menej ako 0 date2.compareTo (date1); // date2> date1, vráti hodnotu väčšiu ako 0 date1.compareTo (date3); // date1 = date3, takže sa do konzoly vytlačí 0
Metóda 2 zo 4: Používanie rovná sa, po a pred
Krok 1. Použite rovnaké, po a pred
Dátumy je možné porovnávať s metódami rovných s rovnými, po a pred. Ak sú dva dátumy pre rovnaký časový bod, metóda equals vráti hodnotu true. Príklady budú používať predtým vytvorené dátumy z metódy porovnať.
Krok 2. Porovnajte pomocou metódy pred
Nasledujúci kód zobrazuje pravdivý a nepravdivý prípad. Ak je dátum1 pred dátumom2, pred vráti hodnotu true. Ak nie je, pred vráti false.
System.out.print (date1.before (date2)); // vypíše true System.out.print (date2.before (date2)); // tlačí false
Krok 3. Porovnajte pomocou metódy after
Nasledujúci kód zobrazuje pravdivý a nepravdivý prípad. Ak je dátum2 za dátumom1, potom za vráti hodnotu true. Ak nie je, po vráti false.
System.out.print (date2.after (date1)); // print true System.out.print (date1.after (date2)); // prints false
Krok 4. Porovnajte pomocou metódy rovná sa
Nasledujúci kód zobrazuje pravdivý a nepravdivý prípad. Ak sú dátumy rovnaké, rovná sa vráti hodnotu true. Ak nie sú, rovná sa vráti hodnotu false.
System.out.print (date1.equals (date3)); // vytlačí true System.out.print (date1.equals (date2)); // vytlačí false
Metóda 3 zo 4: Použitie triedy kalendára
Krok 1. Použite kalendár
Trieda kalendára má tiež metódy compareTo, equals, after a before, ktoré fungujú rovnakým spôsobom, ako je popísané vyššie pre triedu dátumu. Ak sú teda informácie o dátume uchovávané v kalendári, nie je potrebné extrahovať dátum, aby bolo možné vykonať porovnanie.
Krok 2. Vytvorte inštancie Kalendára
Na používanie metód Kalendára budete potrebovať niekoľko inštancií Kalendára. Našťastie môžete jednoducho zachytiť časy z už vytvorených inštancií dátumu.
Calendar cal1 = Calendar.getInstance (); // deklaruje cal1 Calendar cal2 = Calendar.getInstance (); // deklaruje cal2 Calendar cal3 = Calendar.getInstance (); // deklaruje cal3 cal1.setTime (date1); // aplikuje dátum na cal1 cal2.setTime (date2); cal3.setTime (dátum3);
Krok 3. Porovnajte cal1 a cal2 s použitím predtým
Nasledujúci kód by mal mať hodnotu true, pretože cal1 je pred cal2.
System.out.print (cal1.before (cal2)); // vytlačí true
Krok 4. Porovnajte cal1 a cal2 pomocou after
Nasledujúci kód by sa mal vytlačiť nepravdivý, pretože cal1 je pred cal2.
System.out.print (cal1.after (cal2)); // tlačí false
Krok 5. Porovnajte cal1 a cal2 pomocou rovnosti
Nasledujúci kód ukáže príklad pravdivého aj nepravdivého prípadu. Podmienka závisí od porovnávaných inštancií kalendára. Na nasledujúcom riadku by mal kód vytlačiť „true“a potom „false“.
System.out.println (cal1.equals (cal3)); // prinesie true: cal1 == cal3 System.out.print (cal1.equals (cal2)); // vypíše false: cal1! = cal2
Metóda 4 zo 4: Použitie getTime
Krok 1. Použite getTime
Je tiež možné priamo porovnať časový bod dvoch dátumov, aj keď ktorýkoľvek z predchádzajúcich prístupov bude pravdepodobne čitateľnejší a vhodnejší. Pôjde o porovnanie dvoch primitívnych dátových typov, ktoré je možné vykonať pomocou príkazov „“a „==“.
Krok 2. Vytvorte dlhodobé objekty
Pred porovnaním dátumov musíte vytvoriť dlhé celé čísla s údajmi z predtým vytvorených objektov Date. Našťastie väčšinu práce za vás urobí metóda getTime ().
long time1 = getTime (date1); // deklaruje primitívny čas1 od dátumu1 dlhý čas2 = getTime (dátum2); // deklaruje primitívny čas2 od dátumu2
Krok 3. Urobte menej ako porovnanie
Na porovnanie týchto dvoch celočíselných hodnôt použite symbol menej ako (<). Pretože čas1 je kratší ako čas 2, mala by sa vytlačiť prvá správa. Príkaz else je zahrnutý pre správnu syntax.
if (time1 <time2) {System.out.println ("date1 is before date2"); // bude tlačiť od time1 <time2} else {System.out.println ("date1 is not before date2"); }
Krok 4. Vykonajte viac ako porovnanie
Na porovnanie týchto dvoch celočíselných hodnôt použite symbol väčší ako (>). Pretože čas1 je väčší ako čas 2, mala by sa vytlačiť prvá správa. Príkaz else je zahrnutý pre správnu syntax.
if (time2> time1) {System.out.println ("date2 is after date1"); // bude tlačiť od time2> time1} else {System.out.println ("date2 is not after date1"); }
Krok 5. Vykonajte porovnanie rovnaké
Pomocou symbolu skontrolujte rovnosť (==) a porovnajte tieto dve celočíselné hodnoty. Pretože time1 sa rovná time3, mala by sa vytlačiť prvá správa. Ak sa program dostane k príkazu else, znamená to, že časy nie sú rovnaké.
if (time1 == time2) {System.out.println ("datumy su rovnake"); } else {System.out.println ("dátumy nie sú rovnaké"); // sa bude tlačiť od času1! = čas2}