Istnieje wiele sposobów porównywania dat Java. Wewnętrznie data jest reprezentowana jako (długi) punkt w czasie - liczba milisekund, które upłynęły od 1 stycznia 1970 roku. W Javie Data jest obiektem, co oznacza, że zawiera wiele metod porównania. Każda metoda porównywania dwóch dat będzie zasadniczo porównywać czasy dat.
Kroki
Metoda 1 z 4: Korzystanie z porównania do
Krok 1. Użyj porównania do
Date implementuje Comparable, dzięki czemu dwie daty mogą być porównywane bezpośrednio za pomocą metody CompareTo. Jeśli daty dotyczą tego samego punktu w czasie, metoda zwraca zero. Jeśli porównywana data jest przed argumentem daty, zwracana jest wartość mniejsza niż zero. Jeśli porównywana data jest po argumencie date, zwracana jest wartość większa od zera. Jeśli daty są równe, zwracana jest wartość 0.
Krok 2. Utwórz obiekty daty
Będziesz musiał utworzyć każdy obiekt daty, zanim zaczniesz je porównywać. Jednym ze sposobów na to jest użycie klasy SimpleDateFormat. Pozwala na łatwe wprowadzanie wartości dat do obiektów dat.
SimpleDateFormat sdf = new SimpleDateFormat("rrrr-MM-dd"); //Dla deklarowania wartości w nowych obiektach daty. używaj tego samego formatu daty podczas tworzenia dat Date date1 = sdf.parse("1995-02-23"); //data1 to 23 lutego 1995 Data data2 = sdf.parse("2001-10-31"); //data2 to 31 października 2001 Data data3 = sdf.parse("1995-02-23"); //data3 to 23 lutego 1995
Krok 3. Porównaj obiekty daty
Poniższy kod pokaże Ci każdy przypadek - mniejszy niż, równy i większy niż.
data1.porównaj z(data2); //data1 < data2, zwraca mniej niż 0 data2.compareTo(data1); //data2 > data1, zwraca więcej niż 0 data1.compareTo(data3); //data1 = data3, więc wypisze 0 do konsoli
Metoda 2 z 4: Używanie równości, po i przed
Krok 1. Użyj równych, po i przed
Daty można porównać z równymi, po i przed metodami. Jeśli dwie daty dotyczą tego samego punktu w czasie, metoda równości zwróci true. W przykładach wykorzystane zostaną wcześniej utworzone daty z metody CompareTo.
Krok 2. Porównaj używając metody „przed”
Poniższy kod pokazuje prawdziwe i fałszywe przypadki. Jeśli data1 jest wcześniejsza niż data2, before zwraca prawdę. Jeśli tak nie jest, before zwraca false.
System.out.print(data1.przed(data2)); //wypisuje prawdę System.out.print(data2.before(data2)); //wypisuje fałsz
Krok 3. Porównaj za pomocą metody po
Poniższy kod pokazuje prawdziwe i fałszywe przypadki. Jeśli data2 jest po dacie1, after zwraca prawdę. Jeśli nie, after zwraca false.
System.out.print(data2.after(data1));//wydrukowuje prawda System.out.print(data1.after(data2));//wydrukowuje fałsz
Krok 4. Porównaj za pomocą metody równości
Poniższy kod pokazuje prawdziwe i fałszywe przypadki. Jeśli daty są równe, równa się zwraca prawdę. Jeśli tak nie jest, równa się zwraca fałsz.
System.out.print(data1.equals(data3));//wydrukowuje prawda System.out.print(data1.equals(data2));//wydrukowuje fałsz
Metoda 3 z 4: Korzystanie z klasy Calendar
Krok 1. Użyj kalendarza
Klasa calendar ma również metody CompareTo, equals, after i before, które działają w taki sam sposób, jak opisano powyżej dla klasy date. Jeśli więc informacje o dacie są przechowywane w kalendarzu, nie ma potrzeby wyodrębniania daty tylko w celu porównania.
Krok 2. Utwórz instancje Kalendarza
Aby korzystać z metod Kalendarza, potrzebujesz kilku wystąpień Kalendarza. Na szczęście możesz po prostu pobrać czasy z już utworzonych instancji Date.
Kalendarz cal1 = Kalendarz.getInstance(); //deklaruje cal1 Kalendarz cal2 = Calendar.getInstance(); //deklaruje cal2 Kalendarz cal3 = Calendar.getInstance(); //deklaruje cal3 cal1.setTime(data1); //stosuje datę do cal1 cal2.setTime(data2); cal3.setTime(data3);
Krok 3. Porównaj cal1 i cal2 za pomocą wcześniej
Poniższy kod powinien wypisać true, ponieważ cal1 jest przed cal2.
System.out.print(cal1.before(cal2)); //wypisze prawda
Krok 4. Porównaj cal1 i cal2 używając after
Poniższy kod powinien wypisać false, ponieważ cal1 jest przed cal2.
System.out.print(cal1.after(cal2)); //wypisuje fałsz
Krok 5. Porównaj cal1 i cal2 używając równań
Poniższy kod pokaże przykład prawdziwej i fałszywej sprawy. Warunek zależy od porównywanych instancji kalendarza. Kod powinien wypisać „prawda”, a następnie „fałsz” w następnym wierszu.
System.out.println(cal1.equals(cal3)); //wypisuje true: cal1 == cal3 System.out.print(cal1.equals(cal2)); //wypisuje false: cal1 != cal2
Metoda 4 z 4: Korzystanie z getTime
Krok 1. Użyj getTime
Możliwe jest również bezpośrednie porównanie punktu czasowego dwóch dat, chociaż każde z poprzednich podejść będzie prawdopodobnie bardziej czytelne i dlatego preferowane. Będzie to porównanie dwóch podstawowych typów danych, więc można to zrobić za pomocą "" i "==".
Krok 2. Utwórz obiekty długiego czasu
Zanim będziesz mógł porównać daty, musisz utworzyć długie liczby całkowite z danymi z wcześniej utworzonych obiektów Date. Na szczęście metoda getTime() wykona większość pracy za Ciebie.
długi czas1 = getTime(data1); //deklaruje prymitywny czas1 od daty1 długi czas2 = getTime(data2); //deklaruje prymitywny time2 od date2
Krok 3. Zrób mniej niż porównanie
Użyj symbolu mniej niż (<), aby porównać te dwie wartości całkowite. Ponieważ czas 1 jest krótszy niż czas 2, powinna zostać wydrukowana pierwsza wiadomość. Instrukcja else została dołączona dla prawidłowej składni.
if(time1 < time2){ System.out.println("data1 jest wcześniejsza niż data2"); //drukuje od czasu1 <czas2 } else{ System.out.println("data1 nie jest wcześniejsza niż data2"); }
Krok 4. Zrób więcej niż porównanie
Użyj symbolu większego niż (>), aby porównać te dwie wartości całkowite. Ponieważ czas 1 jest większy niż czas 2, powinna zostać wydrukowana pierwsza wiadomość. Instrukcja else została dołączona dla prawidłowej składni.
if(time2 > time1){ System.out.println("data2 jest po dacie1"); //drukuje od czasu czas2 > czas1 } else{ System.out.println("data2 nie jest późniejsza niż data1"); }
Krok 5. Dokonaj porównania równości
Użyj symbolu, aby sprawdzić równość (==), aby porównać te dwie wartości całkowite pod kątem równości. Ponieważ time1 jest równy time3, powinna zostać wydrukowana pierwsza wiadomość. Jeśli program dotrze do instrukcji else, oznacza to, że czasy nie są równe.
if(time1 == time2){ System.out.println("daty są równe"); } else{ System.out.println("daty nie są równe"); //drukuje od czasu 1 != czas 2 }