4 způsoby, jak porovnat dvě data v Javě

Obsah:

4 způsoby, jak porovnat dvě data v Javě
4 způsoby, jak porovnat dvě data v Javě

Video: 4 způsoby, jak porovnat dvě data v Javě

Video: 4 způsoby, jak porovnat dvě data v Javě
Video: Inkscape: How to Change Default Settings 2024, Březen
Anonim

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í

4301351 1
4301351 1

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.

4301351 2
4301351 2

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

4301351 3
4301351 3

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

4301351 4
4301351 4

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.

4301351 5
4301351 5

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

4301351 6
4301351 6

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

4301351 7
4301351 7

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ář

4301351 8
4301351 8

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í.

4301351 9
4301351 9

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

4301351 10
4301351 10

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

4301351 11
4301351 11

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

4301351 12
4301351 12

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

4301351 13
4301351 13

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

4301351 14
4301351 14

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

4301351 15
4301351 15

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

4301351 16
4301351 16

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

4301351 17
4301351 17

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}

Doporučuje: