Existuje mnoho spôsobov, ako porovnať dva dátumy v programovacom jazyku Java. V počítačoch je dátum reprezentovaný číslom (dátový typ Long) v jednotkách času - to znamená počet milisekúnd, ktoré uplynuli od 1. januára 1970. V Jave je dátum objekt, čo znamená, že má niekoľko spôsobov porovnávania. Akákoľvek metóda použitá na porovnanie dvoch dátumov je v zásade porovnanie časových jednotiek týchto dvoch dátumov.
Krok
Metóda 1 zo 4: Použitie porovnávača
Krok 1. Použite porovnávač
Objekt Dátum implementuje porovnateľné, takže 2 dátumy je možné navzájom porovnávať priamo pomocou metódy porovnať. Ak majú oba dátumy rovnaký počet v časových jednotkách, metóda vráti nulu. Ak je druhý dátum menší ako prvý, vráti sa hodnota menšia ako nula. Ak je druhý dátum väčší ako prvý, metóda vráti hodnotu väčšiu ako nula. Ak sú oba dátumy rovnaké, metóda vráti nulovú hodnotu.
Krok 2. Vytvorte viacero objektov dátumu
Pred porovnaním musíte vytvoriť viacero objektov dátumu. Jeden z najľahších spôsobov, ako to urobiť, je použiť triedu SimpleDateFormat. Táto trieda uľahčuje prevod vstupnej hodnoty dátumu na objekt dátumu.
SimpleDateFormat sdf = nové SimpleDateFormat ("rrrr-MM-dd"). Na deklarovanie hodnoty v novom '' Objektovom dátume '' použite pri vytváraní dátumu 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 dátumu
Nasledujúci kód vám ukáže príklady pre každý prípad - menej ako, rovnako a viac ako.
date1.compareTo (dátum2); // date1 <date2, vráti hodnotu menšiu ako 0 date2.compareTo (date1); // date2> date1, vráti hodnotu väčšiu ako 0 date1.compareTo (date3); // date1 = date3, takže na konzole bude vychádzať 0
Metóda 2 zo 4: Použitie rovná sa, po a pred
Krok 1. Použite rovné hodnoty, po a pred
Dátumy je možné porovnávať pomocou metód rovná sa, po a pred. Ak majú dva dátumy v čase rovnakú hodnotu, metóda equals vráti hodnotu true. Nasledujúci príklad bude používať objekt Date vytvorený v ukážkovej metóde porovnania.
Krok 2. Porovnajte s predchádzajúcou metódou
Nasledujúci kód ukazuje príklad prípadu, ktorý vracia hodnoty true a false. Ak je dátum1 dátumom pred dátumom2, metóda before vráti hodnotu true. V opačnom prípade metóda before vráti hodnotu false.
System.out.print (date1.before (date2)); // zobrazenie hodnoty '' true '' System.out.print (date2.before (date2)); // vráti hodnotu '' false ''
Krok 3. Porovnajte pomocou metódy after
Nasledujúci kód ukazuje príklad prípadu, ktorý vracia hodnoty true a false. Ak je dátum2 dátum po dátume1, metóda after vráti hodnotu true. V opačnom prípade metóda after vráti hodnotu false.
System.out.print (date2.after (date1)); // display the value '' true 'System.out.print (date1.after (date2)); // display the value' 'false' '
Krok 4. Porovnajte s metódou rovná sa
Nasledujúci kód ukazuje príklad prípadu, ktorý vracia hodnoty true a false. Ak sú oba dátumy rovnaké, metóda equals vráti hodnotu true. V opačnom prípade metóda equals vráti hodnotu false.
System.out.print (date1.equals (date3)); // zobrazenie hodnoty "true" System.out.print (date1.equals (date2)); // zobrazenie hodnoty "false"
Metóda 3 zo 4: Používanie Kalendára tried
Krok 1. Použite Kalendár tried
Trieda Calendar má tiež metódy compareTo, equals, after a before, ktoré fungujú rovnako ako tie, ktoré boli predtým popísané pre triedu Date. Ak sú teda informácie o dátume uložené v triednom kalendári, dátum nemusíte extrahovať, aby ste mohli vykonať porovnanie.
Krok 2. Vytvorte inštanciu Kalendára
Ak chcete používať metódy v Kalendári tried, musíte vytvoriť viacero inštancií Kalendára. Našťastie môžete použiť hodnoty z predtým vytvorenej inštancie dátumu.
Calendar cal1 = Calendar.getInstance (); // deklarácia cal1 Calendar cal2 = Calendar.getInstance (); // deklarácia cal2 Calendar cal3 = Calendar.getInstance (); // deklarujte cal3 cal1.setTime (date1); // vložte dátum do cal1 cal2.setTime (date2); cal3.setTime (dátum3);
Krok 3. Porovnajte cal1 a cal2 pomocou predchádzajúcej metódy
Nasledujúci kód vygeneruje hodnotu tr
System.out.print (cal1.before (cal2)); // vráti hodnotu '' true ''
Krok 4. Porovnajte cal1 a cal2 pomocou metódy after
Nasledujúci kód vráti hodnotu false, pretože cal1 je dátum pred cal2.
System.out.print (cal1.after (cal2)); // vráti hodnotu '' false ''
Krok 5. Porovnajte cal1 a cal2 pomocou metódy equals
Nasledujúci kód ukáže príklad prípadu, ktorý vracia true a false. Stav závisí od porovnávanej inštancie Kalendára. Nasledujúci kód vráti v nasledujúcom riadku hodnotu „true“a potom „false“.
System.out.println (cal1.equals (cal3)); // vráti hodnotu '' true '': cal1 == cal3 System.out.print (cal1.equals (cal2)); // vráti hodnotu '' false '': cal1! = cal2
Metóda 4 zo 4: Použitie getTime
Krok 1. Použite getTime
Môžete tiež priamo porovnať hodnoty časových jednotiek dvoch dátumov, aj keď predchádzajúce dve metódy môžu byť čitateľnejšie a vhodnejšie. Týmto spôsobom budete porovnávať 2 primitívne typy údajov, takže môžete použiť operandy „“a „==“.
Krok 2. Vytvorte časový objekt vo formáte dlhé číslo
Pred porovnaním dátumov musíte z predtým vytvoreného objektu Date vytvoriť hodnotu Long Integer. Našťastie to za vás urobí metóda getTime ().
long time1 = getTime (date1); // deklarujte primitívny čas1 dátumu1 dlhý čas2 = getTime (dátum2); // deklarujte primitívnu hodnotu time2 dátumu2
Krok 3. Vykonajte menej ako porovnanie
Na porovnanie týchto dvoch celočíselných hodnôt použite operand menší ako (<). Pretože time1 je menší ako time2, zobrazí sa prvá správa. Na dokončenie syntaxe je zahrnutý príkaz else.
if (time1 <time2) {System.out.println ("date1 is the date before date2"); // sa zobrazí, pretože time1 <time2} else {System.out.println ("date1 is not a date before date2"); }
Krok 4. Vykonajte viac ako porovnanie
Na porovnanie týchto dvoch celočíselných hodnôt použite operand väčší ako (>). Pretože time1 je väčší ako time2, zobrazí sa prvá správa. Na dokončenie syntaxe je zahrnutý príkaz else.
if (time2> time1) {System.out.println ("date2 is the date after date1"); // sa zobrazí, pretože time2> time1} else {System.out.println ("date2 is not the date after date1"); }
Krok 5. Vykonajte porovnanie s rovným
Na porovnanie týchto dvoch celých čísel použite funkciu operandu na kontrolu rovnosti hodnôt (==). Pretože time1 sa rovná time3, zobrazí sa prvá správa. Ak tok programu prejde do príkazu else, znamená to, že dva krát nemajú rovnakú hodnotu.
if (time1 == time2) {System.out.println („oba dátumy sú rovnaké“); } else {System.out.println ("1. nie je to isté ako 2."); // sa zobrazí, pretože time1! = time2}