Има много начини за сравняване на две дати в езика за програмиране на Java. В компютрите датата е представена с число (тип данни Long) в единици време - тоест броя на милисекундите, които са изтекли от 1 януари 1970 г. В Java Date е обект, което означава, че има няколко метода за сравнение. Всеки метод, използван за сравняване на две дати, по същество е сравняване на времевите единици на двете дати.
Стъпка
Метод 1 от 4: Използване на compareTo
Стъпка 1. Използвайте compareTo
Обектът Date реализира Comparable, така че 2 дати могат да се сравняват помежду си директно с метода compareTo. Ако и двете дати имат еднакъв брой във времеви единици, тогава методът връща нула. Ако втората дата е по -малка от първата, се връща стойност по -малка от нула. Ако втората дата е по -голяма от първата, методът връща стойност, по -голяма от нула. Ако и двете дати са еднакви, тогава методът ще върне нулева стойност.
Стъпка 2. Създайте множество обекти Date
Трябва да създадете няколко обекта Date, преди да ги сравните. Един от най -лесните начини да направите това е да използвате класа SimpleDateFormat. Този клас улеснява преобразуването на входна стойност на дата в обект Date.
SimpleDateFormat sdf = нов SimpleDateFormat ("yyyy-MM-dd"). За да декларирате стойност в нова '' Object Date '', използвайте същия формат за дата, когато създавате датата. Date date1 = sdf.parse ("1995-02-23"); // дата1 е 23 февруари 1995 г. Дата дата2 = sdf.parse ("2001-10-31"); // date2 е 31 октомври 2001 Date date3 = sdf.parse ("1995-02-23"); // дата3 е 23 февруари 1995 г.
Стъпка 3. Сравнете обектите Date
Следният код ще ви покаже примери за всеки случай - по -малко, равно и по -голямо от.
date1.compareTo (date2); // date1 <date2, връща стойност по -малка от 0 date2.compareTo (date1); // date2> date1, връща стойност, по -голяма от 0 date1.compareTo (date3); // date1 = date3, така че ще изведе 0 на конзолата
Метод 2 от 4: Използване на равно, след и преди
Стъпка 1. Използвайте равни, след и преди
Датите могат да се сравняват, като се използват методите за равно, след и преди. Ако две дати имат една и съща стойност във времето, методът equals връща true. Следващият пример ще използва обекта Date, създаден в примерния метод compareTo.
Стъпка 2. Сравнете с предишния метод
Следният код показва примерен случай, който връща true и false. Ако date1 е дата преди date2, методът before връща true. В противен случай методът преди връща false.
System.out.print (date1.before (date2)); // показва стойността '' true '' System.out.print (date2.before (date2)); // връща стойността '' false ''
Стъпка 3. Сравнете, като използвате метода after
Следният код показва примерен случай, който връща true и false. Ако date2 е датата след date1, методът after връща true. В противен случай методът after ще се върне false.
System.out.print (date2.after (date1)); // показва стойността „true“System.out.print (date1.after (date2)); // показва стойността „false“
Стъпка 4. Сравнете с метод equals
Следният код показва примерен случай, който връща true и false. Ако и двете дати са равни, методът equals връща true. В противен случай методът equals връща false.
System.out.print (date1.equals (date3)); // показва стойността "" true "" System.out.print (date1.equals (date2)); // показва стойността "" false ""
Метод 3 от 4: Използване на календара на класа
Стъпка 1. Използвайте календара на класа
Класът Calendar също има compareTo, equals, after и before методи, които работят същите като описаните по -рано за Date клас. Така че, ако информацията за датата се съхранява в календар на класа, не е нужно да извличате датата само за да направите сравнение.
Стъпка 2. Създайте екземпляр на Календар
За да използвате методи в Календар на класа, трябва да създадете няколко екземпляра на Календар. За щастие можете да използвате стойностите от предварително създаден екземпляр на Date.
Календар cal1 = Calendar.getInstance (); // обявява cal1 Календар cal2 = Calendar.getInstance (); // обявява cal2 Календар cal3 = Calendar.getInstance (); // обявява cal3 cal1.setTime (date1); // поставяме датата в cal1 cal2.setTime (date2); cal3.setTime (date3);
Стъпка 3. Сравнете cal1 и cal2, като използвате предишния метод
Следният код ще изведе стойността на tr
System.out.print (cal1.before (cal2)); // ще върне стойност '' true ''
Стъпка 4. Сравнете cal1 и cal2, като използвате метода after
Следният код ще върне false, защото cal1 е датата преди cal2.
System.out.print (cal1.after (cal2)); // връща стойността '' false ''
Стъпка 5. Сравнете cal1 и cal2, като използвате метода на equals
Следният код ще покаже примерен случай, който връща 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
Стъпка 1. Използвайте getTime
Можете също така директно да сравните стойностите на времевите единици на две дати, въпреки че предишните два метода може да са по -лесни за четене и за предпочитане. По този начин ще сравнявате 2 примитивни типа данни, така че можете да използвате операндите "" и "==".
Стъпка 2. Създайте обект за време във формат с дълги числа
Преди да можете да сравнявате дати, трябва да създадете Long Integer стойност от предварително създадения обект Date. За щастие методът getTime () ще го направи вместо вас.
дълго време1 = getTime (дата1); // декларираме примитивно време1 на дата1 дълго време2 = getTime (дата2); // обявява примитивна time2 стойност на date2
Стъпка 3. Извършете сравнение по -малко
Използвайте операнда по -малък от (<), за да сравните тези две цели числа. Тъй като time1 е по -малко от time2, ще се появи първото съобщение. Изразът else е включен, за да завърши синтаксиса.
if (time1 <time2) {System.out.println ("date1 е датата преди date2"); // ще се покаже, защото time1 <time2} else {System.out.println ("date1 не е дата преди date2"); }
Стъпка 4. Извършете повече от сравнение
Използвайте операнда по -голям от (>), за да сравните тези две цели числа. Тъй като time1 е по -голямо от time2, ще се появи първото съобщение. Изразът else е включен, за да завърши синтаксиса.
if (time2> time1) {System.out.println ("date2 е датата след date1"); // ще се покаже, защото time2> time1} else {System.out.println ("date2 не е датата след date1"); }
Стъпка 5. Направете сравнение равно
Използвайте функцията операнд, за да проверите равенството на стойностите (==), за да сравните тези две цели числа. Тъй като time1 е равно на time3, ще се появи първото съобщение. Ако потокът на програмата отива в оператора else, това означава, че двата пъти нямат една и съща стойност.
if (time1 == time2) {System.out.println ("и двете дати са еднакви"); } else {System.out.println ("Първото не е същото като второто"); // ще се покаже, защото time1! = time2}