Data Java lze porovnávat různými způsoby. Interně je datum reprezentováno jako (dlouhý) časový bod - počet milisekund, které uplynuly od 1. ledna 1970. V Javě je Date objektem, což znamená, že obsahuje více metod pro srovnání. Jakýkoli způsob porovnání dvou dat v zásadě porovná časy dat.
Kroky
Metoda 1 ze 4: Použití funkce srovnávání
Krok 1. Použijte srovnání
Datum implementuje porovnatelné, a tak lze dvě data porovnat přímo s metodou porovnat. Pokud jsou data pro stejný časový okamžik, metoda vrátí nulu. Pokud je porovnávané datum před argumentem data, je vrácena hodnota menší než nula. Pokud je porovnávané datum za argumentem data, je vrácena hodnota větší než nula. Pokud jsou data stejná, je vrácena hodnota 0.
Krok 2. Vytvořte objekty data
Každý objekt data budete muset vytvořit, než je začnete porovnávat. Jedním ze způsobů, jak to udělat, je použít třídu SimpleDateFormat. Umožňuje snadné zadávání hodnot data do objektů data.
SimpleDateFormat sdf = new SimpleDateFormat ("rrrr-MM-dd"); // Pro deklarování hodnot v nových datech. použít stejný formát data při vytváření dat Datum datum1 = sdf.parse ("1995-02-23"); // datum1 je 23. února 1995 Datum datum2 = sdf.parse ("2001-10-31"); // datum2 je 31. října 2001 Datum datum3 = sdf.parse ("1995-02-23"); // date3 je 23. února 1995
Krok 3. Porovnejte objekty data
Níže uvedený kód vám ukáže každý případ - menší než, stejný a větší než.
date1.compareTo (date2); // date1 <date2, vrací méně než 0 date2.compareTo (date1); // date2> date1, vrátí větší než 0 date1.compareTo (date3); // date1 = date3, takže se do konzoly vytiskne 0
Metoda 2 ze 4: Použití Equals, After a Before
Krok 1. Použijte equals, after a before
Data lze porovnat s metodami rovných, po a před. Pokud jsou dvě data pro stejný časový okamžik, metoda equals vrátí true. Příklady budou používat dříve vytvořená data z metody compareTo.
Krok 2. Porovnejte pomocí metody before
Níže uvedený kód ukazuje pravdivý a nepravdivý případ. Pokud je date1 před date2, before vrací true. Pokud tomu tak není, před vrátí false.
System.out.print (date1.before (date2)); // vytiskne true System.out.print (date2.before (date2)); // tiskne false
Krok 3. Porovnejte pomocí metody after
Níže uvedený kód ukazuje pravdivý a nepravdivý případ. Pokud date2 je po date1, po vrací true. Pokud tomu tak není, po vrátí false.
System.out.print (date2.after (date1)); // vytiskne true System.out.print (date1.after (date2)); // vytiskne false
Krok 4. Porovnejte pomocí metody equals
Níže uvedený kód ukazuje pravdivý a nepravdivý případ. Pokud jsou data stejná, rovná se vrací true. Pokud nejsou, rovná se vrací false.
System.out.print (date1.equals (date3)); // vytiskne true System.out.print (date1.equals (date2)); // vytiskne false
Metoda 3 ze 4: Použití třídy Kalendář
Krok 1. Použijte kalendář
Třída kalendáře má také metody compareTo, equals, after a before, které fungují stejným způsobem, jak je popsáno výše pro třídu data. Pokud jsou tedy informace o datu uchovávány v kalendáři, není nutné datum extrahovat pouze za účelem srovnání.
Krok 2. Vytvořte instance kalendáře
Chcete -li používat metody Kalendáře, budete potřebovat několik instancí Kalendáře. Naštěstí můžete pouze zachytit časy z již vytvořených instancí Date.
Calendar cal1 = Calendar.getInstance (); // deklaruje cal1 Calendar cal2 = Calendar.getInstance (); // deklaruje cal2 Calendar cal3 = Calendar.getInstance (); // deklaruje cal3 cal1.setTime (date1); // aplikuje datum na cal1 cal2.setTime (date2); cal3.setTime (date3);
Krok 3. Porovnejte cal1 a cal2 s použitím dříve
Níže uvedený kód by měl tisknout true, protože cal1 je před cal2.
System.out.print (cal1.before (cal2)); // vytiskne true
Krok 4. Porovnejte cal1 a cal2 pomocí after
Níže uvedený kód by měl tisknout false, protože cal1 je před cal2.
System.out.print (cal1.after (cal2)); // tiskne false
Krok 5. Porovnejte cal1 a cal2 pomocí equals
Níže uvedený kód ukáže příklad pravdivého i nepravdivého případu. Podmínka závisí na porovnávaných instancích kalendáře. Na dalším řádku by měl kód vytisknout „true“, pak „false“.
System.out.println (cal1.equals (cal3)); // tiskne true: cal1 == cal3 System.out.print (cal1.equals (cal2)); // tiskne false: cal1! = cal2
Metoda 4 ze 4: Použití getTime
Krok 1. Použijte getTime
Je také možné přímo porovnat časový okamžik dvou dat, i když kterýkoli z předchozích přístupů bude pravděpodobně čitelnější a tak vhodnější. Toto bude srovnání dvou primitivních datových typů, takže to lze provést pomocí "" a "==".
Krok 2. Vytvořte dlouhodobé objekty
Než budete moci data porovnávat, musíte vytvořit dlouhá celá čísla s daty z dříve vytvořených objektů Date. Naštěstí metoda getTime () udělá většinu práce za vás.
long time1 = getTime (date1); // deklaruje primitivní time1 od date1 long time2 = getTime (date2); // deklaruje primitivní time2 od date2
Krok 3. Proveďte méně než srovnání
Pomocí symbolu less than (<) porovnejte tyto dvě celočíselné hodnoty. Protože time1 je menší než čas 2, měla by se vytisknout první zpráva. Pro správnou syntaxi je zahrnut příkaz else.
if (time1 <time2) {System.out.println ("date1 is before date2"); // bude tisknout od time1 <time2} else {System.out.println ("date1 is before before date2"); }
Krok 4. Proveďte více než srovnání
Pomocí symbolu větší než (>) porovnejte tyto dvě celočíselné hodnoty. Protože time1 je větší než čas 2, měla by se vytisknout první zpráva. Pro správnou syntaxi je zahrnut příkaz else.
if (time2> time1) {System.out.println ("date2 is after date1"); // bude tisknout od time2> time1} else {System.out.println ("date2 není po date1"); }
Krok 5. Proveďte stejné srovnání
Pomocí symbolu zkontrolujte rovnost (==) a porovnejte tyto dvě celočíselné hodnoty pro rovnost. Protože time1 se rovná time3, měla by se vytisknout první zpráva. Pokud se program dostane k příkazu else, znamená to, že časy nejsou stejné.
if (time1 == time2) {System.out.println ("data jsou stejná"); } else {System.out.println ("data nejsou stejná"); // bude tisknout od time1! = time2}