Existuje mnoho způsobů, jak porovnat dvě data v programovacím jazyce Java. V počítačích je datum reprezentováno číslem (datový typ Long) v jednotkách času - tj. Počet milisekund, které uplynuly od 1. ledna 1970. V Javě je Date objekt, což znamená, že má několik metod pro porovnávání. Jakákoli metoda použitá ke srovnání dvou dat je v podstatě porovnání časových jednotek těchto dvou dat.
Krok
Metoda 1 ze 4: Použití funkce srovnávání
Krok 1. Použijte srovnávač
Objekt Date implementuje srovnatelné, takže 2 data lze navzájem porovnávat přímo metodou compareTo. Pokud mají obě data stejný počet v časových jednotkách, pak metoda vrátí nulu. Pokud je druhé datum menší než první, vrátí se hodnota menší než nula. Pokud je druhé datum větší než první, metoda vrátí hodnotu větší než nula. Pokud jsou obě data stejná, pak metoda vrátí hodnotu null.
Krok 2. Vytvořte více objektů Datum
Před jejich porovnáním musíte vytvořit více objektů Date. Jedním z nejjednodušších způsobů, jak to udělat, je použít třídu SimpleDateFormat. Tato třída usnadňuje převod vstupní hodnoty data na objekt Date.
SimpleDateFormat sdf = nový SimpleDateFormat ("rrrr-MM-dd"). Chcete -li deklarovat hodnotu v novém '' Objektovém datu '', použijte při vytváření data stejný formát data. 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 Date
Následující kód vám ukáže příklady pro každý případ - menší než, stejný a větší než.
date1.compareTo (date2); // date1 <date2, vrací hodnotu menší než 0 date2.compareTo (date1); // datum2> datum1, vrátí hodnotu větší než 0 date1.compareTo (date3); // date1 = date3, takže bude na konzole vydávat 0
Metoda 2 ze 4: Použití Equals, After a Before
Krok 1. Použijte equals, after a before
Data lze porovnávat pomocí metod equals, after a before. Pokud mají dvě data v čase stejnou hodnotu, metoda equals vrátí hodnotu true. Následující příklad bude používat Date objekt vytvořený v příkladové metodě porovnáníTo.
Krok 2. Porovnejte s předchozí metodou
Následující kód ukazuje příklad případu, který vrací true a false. Pokud date1 je datum před date2, metoda before vrátí true. V opačném případě metoda before vrátí hodnotu false.
System.out.print (date1.before (date2)); // zobrazí hodnotu '' true '' System.out.print (date2.before (date2)); // vrátí hodnotu '' false ''
Krok 3. Porovnejte pomocí metody after
Následující kód ukazuje příklad případu, který vrací true a false. Pokud date2 je datum po date1, metoda after vrací true. V opačném případě metoda after vrátí hodnotu false.
System.out.print (date2.after (date1)); // zobrazí hodnotu '' true '' System.out.print (date1.after (date2)); // zobrazí hodnotu '' false ''
Krok 4. Porovnejte s metodou equals
Následující kód ukazuje příklad případu, který vrací true a false. Pokud jsou obě data stejná, metoda equals vrátí hodnotu true. V opačném případě metoda equals vrátí hodnotu false.
System.out.print (date1.equals (date3)); // zobrazí hodnotu '' true '' System.out.print (date1.equals (date2)); // zobrazí hodnotu '' false ''
Metoda 3 ze 4: Použití Kalendáře tříd
Krok 1. Použijte třídní kalendář
Třída Calendar má také metody compareTo, equals, after a before, které fungují stejně jako metody popsané dříve pro třídu Date. Pokud jsou tedy informace o datu uloženy v Kalendáři tříd, nemusíte extrahovat datum, abyste mohli provést srovnání.
Krok 2. Vytvořte instanci Kalendáře
Chcete -li používat metody v Kalendáři tříd, musíte vytvořit více instancí Kalendáře. Naštěstí můžete použít hodnoty z dříve vytvořené instance Date.
Calendar cal1 = Calendar.getInstance (); // deklarace cal1 Calendar cal2 = Calendar.getInstance (); // deklarace cal2 Calendar cal3 = Calendar.getInstance (); // deklarace cal3 cal1.setTime (date1); // vložte datum do cal1 cal2.setTime (date2); cal3.setTime (date3);
Krok 3. Porovnejte cal1 a cal2 pomocí metody before
Následující kód vygeneruje hodnotu tr
System.out.print (cal1.before (cal2)); // vrátí hodnotu '' true ''
Krok 4. Porovnejte cal1 a cal2 pomocí metody after
Následující kód vrátí hodnotu false, protože cal1 je datum před cal2.
System.out.print (cal1.after (cal2)); // vrátí hodnotu '' false ''
Krok 5. Porovnejte cal1 a cal2 pomocí metody equals
Následující kód zobrazí příklad případu, který vrací true a false. Stav závisí na porovnávané instanci Kalendáře. Následující kód vrátí hodnotu „true“a poté „false“na dalším řádku.
System.out.println (cal1.equals (cal3)); // vrátí hodnotu '' true '': cal1 == cal3 System.out.print (cal1.equals (cal2)); // vrátí hodnotu '' false '': cal1! = cal2
Metoda 4 ze 4: Použití getTime
Krok 1. Použijte getTime
Můžete také přímo porovnat hodnoty časových jednotek dvou dat, ačkoli předchozí dvě metody mohou být čitelnější a vhodnější. Tímto způsobem budete porovnávat 2 primitivní datové typy, takže můžete použít operandy „“a „==“.
Krok 2. Vytvořte časový objekt ve formátu Long number
Než budete moci porovnávat data, musíte z dříve vytvořeného objektu Date vytvořit hodnotu Long Integer. Naštěstí to za vás udělá metoda getTime ().
long time1 = getTime (date1); // deklarujte primitivní time1 of date1 long time2 = getTime (date2); // deklarujte primitivní hodnotu time2 data2
Krok 3. Proveďte méně než srovnání
K porovnání těchto dvou celočíselných hodnot použijte operand menší než (<). Protože time1 je menší než time2, objeví se první zpráva. Pro dokončení syntaxe je zahrnut příkaz else.
if (time1 <time2) {System.out.println ("date1 is the date before date2"); // se zobrazí, protože time1 <time2} else {System.out.println ("date1 is a date before date2"); }
Krok 4. Proveďte větší než srovnání
K porovnání těchto dvou celočíselných hodnot použijte operand větší než (>). Protože time1 je větší než time2, zobrazí se první zpráva. Pro dokončení syntaxe je zahrnut příkaz else.
if (time2> time1) {System.out.println ("date2 is the date after date1"); // se zobrazí, protože time2> time1} else {System.out.println ("date2 is the date after date1"); }
Krok 5. Proveďte srovnávací srovnání
Pomocí funkce operandu zkontrolujte rovnost hodnot (==) a porovnejte tato dvě celá čísla. Protože time1 se rovná time3, objeví se první zpráva. Pokud tok programu přejde do příkazu else, znamená to, že dva časy nemají stejnou hodnotu.
if (time1 == time2) {System.out.println ("obě data jsou stejná"); } else {System.out.println ("1. není totéž co 2."); // se zobrazí, protože time1! = time2}