Порівняйте дати в Java

Автор: Roger Morrison
Дата Створення: 24 Вересень 2021
Дата Оновлення: 1 Липня 2024
Anonim
Урок по Java 48: Даты, календари и время.
Відеоролик: Урок по Java 48: Даты, календари и время.

Зміст

Існує кілька способів порівняння дат у Java. Внутрішньо дата представлена ​​як (довгий) момент часу - кількість мілісекунд, які пройшли з 1 січня 1970 р. У Java дата є об’єктом Date, що означає, що вона містить безліч методів порівняння дат. Будь-який метод порівняння двох дат в основному порівнює минулий час обох дат.

Крок

Спосіб 1 з 4: Використання команди "compareTo"

  1. Використовуйте функцію compareTo. Дата реалізує ComparableDate> і тому дві дати можна безпосередньо порівняти між собою за допомогою методу compareTo. Якщо дати вказують той самий момент часу, метод поверне нуль. Якщо дата, що порівнюється, передує аргументу дати, тоді буде повернуто від’ємне значення. Якщо дата порівняння є датою пізнішою, ніж дата аргументу дати, тоді буде повернуто позитивне значення. Якщо дати однакові, буде повернуто нуль.
  2. Створіть об'єкти Date. Вам доведеться створити кожен об’єкт дати, перш ніж ви зможете розпочати їх порівняння. Один із способів зробити це - застосувати клас SimpleDateFormat. Це дозволяє легко вводити дати в об'єкти Date.

      SimpleDateFormat sdf = новий SimpleDateFormat ("рррр-ММ-дд"); // Для оголошення значень у нових об’єктах дати.Використовуйте той самий формат дати при створенні дат 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 року

  3. Порівняйте об’єкти дати. Нижче показано кожен випадок - менше, дорівнює і більше ніж.

      date1.compareTo (date2); // date1 date2, менше 0 date2.compareTo (date1); // date2> date1, повертає більше 0 date1.compareTo (date3); // date1 = date3, повертає 0

Метод 2 з 4: Використання методів "дорівнює, після і до"

  1. Використовуйте дорівнює, після і до. Дати можна порівнювати між собою за допомогою методів дорівнює, після і до. Якщо дві дати вказують один і той же час, метод equals поверне значення "true". У прикладах використовуються раніше створені дати за допомогою методу compareTo.
  2. Порівняйте, використовуючи попередній метод. У наведеному нижче коді показано випадки істини та хибності. Якщо date1 раніше, ніж date2, результат є істинним. Якщо ні, то повертає false.

      System.out.print (date1.before (date2)); // друк true System.out.print (date2.before (date2)); // друкувати false

  3. Порівняйте це з методом after. У наведеному нижче коді показано випадки істини та хибності. Якщо date2 пізніше, ніж date1, то після повертає true. Якщо ні, після повертає false.

      System.out.print (date2.after (date1)); // print true System.out.print (date1.after (date2)); // print false

  4. Порівняйте, використовуючи метод рівних. У наведеному нижче коді показано випадки істини та хибності. Якщо дати однакові, дорівнює повертає true. Якщо ні, рівне повертає false.

      System.out.print (date1.equals (date3)); // print true System.out.print (date1.equals (date2)); // print false

Метод 3 з 4: Використання класу Календар

  1. Використовуйте клас Календар. У класі Calendar також є методи compareTo, equals, after і before, які працюють так само, як описано вище для класу дати. Отже, якщо дані дати зберігаються в календарі, немає необхідності витягувати "дату", просто порівнювати дві дати.
  2. Створити екземпляр календаря. Для використання методів календаря потрібні деякі екземпляри календаря. На щастя, ви можете використовувати час, згенерований екземплярами Date.

      Календар cal1 = Calendar.getInstance (); // оголошує cal1 Calendar cal2 = Calendar.getInstance (); // оголошує cal2 Calendar cal3 = Calendar.getInstance (); // оголошує cal3 cal1.setTime (date1); // застосовує дату до cal1 cal2.setTime (date2); cal3.setTime (date3);

  3. Порівняйте cal1 та cal2, використовуючи раніше. Наведений нижче код повертає істину, оскільки cal1 раніше, ніж cal2.

      System.out.print (cal1.before (cal2)); // друк true

  4. Порівняйте cal1 та cal2, використовуючи після. Наведений нижче код повертає значення false, оскільки cal1 раніше, ніж cal2.

      System.out.print (cal1.after (cal2)); // друкувати false

  5. Порівняйте cal1 та cal2, використовуючи рівні. У наведеному нижче коді наведено приклад як істинного, так і хибного. Умова залежить від екземплярів календаря, які порівнюються. Код нижче повертає "true", а потім "false" у наступному рядку.

      System.out.println (cal1.equals (cal3)); // друк true: cal1 == cal3 System.out.print (cal1.equals (cal2)); // друк помилковий: cal1! = cal2

Метод 4 з 4: Використання методу "getTime"

  1. Використовуйте getTime. Також можна безпосередньо порівняти два часові моменти, хоча будь-який із вищезазначених підходів, швидше за все, дасть більш читабельні результати і тому є кращим. Це порівняння двох примітивних типів даних, що можна зробити за допомогою "", ">" та "==".
  2. Створіть "довгі" об'єкти часу. Перш ніж можна порівняти дати, потрібно створити довгі цілі числа з даних раніше створених об’єктів Date. На щастя, метод getTime () зробить більшу частину роботи за вас.

      long time1 = getTime (date1); // оголошує примітивний час1 дати1 довгий час2 = getTime (дата2); // оголошує примітивний час2 дати2

  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}