![Урок по Java 48: Даты, календари и время.](https://i.ytimg.com/vi/EwefevRSHeI/hqdefault.jpg)
Съдържание
- Стъпвам
- Метод 1 от 4: Използване на командата "compareTo"
- Метод 2 от 4: Използване на методите "е равно, след и преди"
- Метод 3 от 4: Използване на клас Календар
- Метод 4 от 4: Използване на метода "getTime"
Има няколко начина за сравняване на дати в Java. Вътрешно датата се представя като (дълъг) момент във времето - броят на милисекундите, изминали от 1 януари 1970 г. В Java датата е обектът Date, което означава, че съдържа множество методи за сравняване на дати. Всеки метод за сравняване на две дати основно ще сравнява изминалото време на двете дати.
Стъпвам
Метод 1 от 4: Използване на командата "compareTo"
Използвайте compareTo. Date реализира ComparableDate> и така две дати могат да бъдат директно сравнени помежду си, използвайки метода compareTo. Ако датите показват един и същ момент във времето, методът ще върне нула. Ако датата, която се сравнява, е преди аргумента за дата, тогава ще бъде върната отрицателна стойност. Ако датата, която се сравнява, е по-късна от тази на аргумента за дата, тогава ще бъде върната положителна стойност. Ако датите са еднакви, ще бъде върната нула.
Създайте обектите Date. Ще трябва да създадете всеки обект за дата, преди да можете да започнете да ги сравнявате. Един от начините да направите това е да приложите класа SimpleDateFormat. Това ви позволява лесно да въвеждате дати в обекти Date.
SimpleDateFormat sdf = нов SimpleDateFormat ("гггг-MM-dd"); // За деклариране на стойности в нови обекти с дата.Използвайте същия формат на дата, когато създавате дати Date date1 = sdf.parse ("1995-02-23"); // date1 е 23 февруари 1995 г. Date date2 = sdf.parse ("2001-10-31"); // date2 е 31 октомври 2001 г. Date date3 = sdf.parse ("1995-02-23"); // date3 е 23 февруари 1995 г.
Сравнете обектите за дата. По-долу е показан всеки случай - по-малко от, равно на и по-голямо от.
date1.compareTo (date2); // date1 date2, по-малко от 0 date2.compareTo (date1); // date2> date1, връща по-голямо от 0 date1.compareTo (date3); // date1 = date3, връща 0
Метод 2 от 4: Използване на методите "е равно, след и преди"
Използвайте равно, след и преди. Датите могат да се сравняват помежду си, като се използват методите equals, after и before. Ако две дати показват едно и също време, методът equals ще върне „true“. Примерите използват предварително създадените дати чрез метода compareTo.
Сравнете, използвайки метода преди. Кодът по-долу показва случай на вярно и невярно. Ако date1 е по-рано от date2, резултатът е верен. Ако не, преди връща false.
System.out.print (date1.before (date2)); // отпечатваме true System.out.print (date2.before (date2)); // отпечатвам false
Сравнете това с метода after. Кодът по-долу показва случай на вярно и невярно. Ако date2 е по-късно от date1, тогава след връща true. Ако не, след връща false.
System.out.print (date2.after (date1)); // print true System.out.print (date1.after (date2)); // print false
Сравнете, използвайки метода на равни. Кодът по-долу показва случай на вярно и невярно. Ако датите са еднакви, equals връща true. Ако не, равното връща false.
System.out.print (date1.equals (date3)); // print true System.out.print (date1.equals (date2)); // print false
Метод 3 от 4: Използване на клас Календар
Използвайте класа Календар. Класът Календар също има методите compareTo, equals, after и before, които работят по същия начин, както е описано по-горе за класа дата. Така че, ако данните за датата се съхраняват в календар, няма нужда да се извлича „дата“, а само да се сравнят две дати.
Създайте екземпляр на Календар. За да използвате методите на календара, имате нужда от някои копия на календара. За щастие можете да използвате времето, генерирано от инстанциите Date.
Календар cal1 = Calendar.getInstance (); // декларира cal1 Calendar cal2 = Calendar.getInstance (); // декларира cal2 Календар cal3 = Calendar.getInstance (); // декларира cal3 cal1.setTime (date1); // прилага дата към cal1 cal2.setTime (date2); cal3.setTime (дата3);
Сравнете cal1 и cal2, използвайки преди. Кодът по-долу връща true, защото cal1 е по-рано от cal2.
System.out.print (cal1.before (cal2)); // отпечатвам true
Сравнете cal1 и cal2, като използвате след. Кодът по-долу връща false, тъй като cal1 е по-рано от cal2.
System.out.print (cal1.after (cal2)); // отпечатвам false
Сравнете cal1 и cal2, използвайки равно. Кодът по-долу показва пример както за true, така и за false. Условието зависи от екземплярите на календара, които се сравняват. Кодът по-долу връща „true“ и след това „false“ на следващия ред.
System.out.println (cal1.equals (cal3)); // отпечатвам true: cal1 == cal3 System.out.print (cal1.equals (cal2)); // отпечатване на false: cal1! = cal2
Метод 4 от 4: Използване на метода "getTime"
Използвайте getTime. Възможно е също така директно да се сравнят две времеви точки, въпреки че всеки от предходните подходи е вероятно да даде по-четливи резултати и по този начин е предпочитан. Това е сравнение на два примитивни типа данни, така че може да се направи с "", ">" и "==".
Създайте "дългите" обекти във времето. Преди да можете да сравните дати, трябва да създадете дълги цели числа от данните на предварително създадените обекти Date. За щастие методът getTime () ще свърши по-голямата част от работата вместо вас.
дълго време1 = getTime (дата1); // декларира примитивно време1 на date1 long time2 = getTime (date2); // декларира примитивно време2 от date2
Използвайте уравнение „по-малко от“. Използвайте символ „по-малко от“ (), за да сравните тези две цели числа. Тъй като time1 е по-малко от time2, първото съобщение трябва да бъде отпечатано на екрана. Операторът else е включен за правилния синтаксис.
if (time1 time2) {System.out.println ("date1 е по-рано от date2"); // отпечатваме, защото time1 time2} else {System.out.println ("date1 е по-късно или равно на date2"); }
Направете сравнение „по-голямо от“. Използвайте символа "по-голямо от" (>), за да сравните тези две цели числа. Тъй като time1 е по-голям от time2, първото съобщение се отпечатва на екрана. Операторът else е включен за правилен синтаксис.
if (time2> time1) {System.out.println ("date2 идва след date1"); // отпечатваме, защото time2> time1} else {System.out.println ("date2 е по-ранна или равна на date1"); }
Направете сравнение „равно на“. Използвайте символа (==), за да сравните тези две цели числа. Тъй като time1 е равно на time3, първото съобщение трябва да бъде отпечатано. Ако програмата стигне до оператора else, това означава, че времената не са еднакви.
if (time1 == time2) {System.out.println ("Датите са равни"); } else {System.out.println ("Датите не са равни"); // отпечатваме, защото time1! = time2}