Сравнить даты на Java

Автор: Roger Morrison
Дата создания: 24 Сентябрь 2021
Дата обновления: 1 Июль 2024
Anonim
Java. Работа с датой и временем.
Видео: Java. Работа с датой и временем.

Содержание

В Java есть несколько способов сравнения дат. Внутри дата представлена ​​как (длинный) момент времени - количество миллисекунд, прошедших с 1 января 1970 года. В Java дата является объектом Date, что означает, что он содержит несколько методов для сравнения дат. Любой метод сравнения двух дат в основном сравнивает истекшее время обеих дат.

Шагать

Метод 1 из 4. Использование команды "compareTo"

  1. Используйте compareTo. Date реализует 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, результат будет истинным. Если нет, before возвращает false.

      System.out.print (date1.before (date2)); // выводим истину System.out.print (date2.before (date2)); // выводим false

  3. Сравните это с методом после. В приведенном ниже коде показан случай истинного и ложного. Если date2 позже date1, то after возвращает true. В противном случае после возвращает false.

      System.out.print (date2.after (date1)); // выводим true System.out.print (date1.after (date2)); // выводим false

  4. Сравните, используя метод равенства. В приведенном ниже коде показан случай истинного и ложного. Если даты совпадают, equals возвращает true. Если нет, equals возвращает false.

      System.out.print (date1.equals (date3)); // выводим true System.out.print (date1.equals (date2)); // выводим false

Метод 3 из 4. Использование класса Calendar

  1. Используйте класс Calendar. Класс Calendar также имеет методы compareTo, equals, after и before, которые работают так же, как описано выше для класса date. Таким образом, если данные даты хранятся в календаре, нет необходимости извлекать «дату», просто чтобы сравнить две даты.
  2. Создайте экземпляр календаря. Чтобы использовать методы Calendar, вам понадобятся несколько экземпляров Calendar. К счастью, вы можете использовать время, генерируемое экземплярами 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)); // выводим истину

  4. Сравните cal1 и cal2, используя after. Приведенный ниже код возвращает false, потому что cal1 раньше, чем cal2.

      System.out.print (cal1.after (cal2)); // выводим false

  5. Сравните cal1 и cal2, используя equals. В приведенном ниже коде показан пример как истинного, так и ложного. Условие зависит от сравниваемых экземпляров Calendar. Приведенный ниже код возвращает «истина», а затем «ложь» в следующей строке.

      System.out.println (cal1.equals (cal3)); // вывести истину: cal1 == cal3 System.out.print (cal1.equals (cal2)); // вывести ложь: cal1! = cal2

Метод 4 из 4. Использование метода getTime

  1. Используйте getTime. Также возможно прямое сравнение двух временных точек, хотя любой из вышеупомянутых подходов, вероятно, даст более удобочитаемые результаты и, следовательно, является предпочтительным. Это сравнение двух примитивных типов данных, поэтому может быть выполнено с помощью "", ">" и "==".
  2. Создайте объекты «долгого» времени. Прежде чем вы сможете сравнивать даты, вы должны создать длинные целые числа из данных ранее созданных объектов Date. К счастью, большую часть работы за вас сделает метод getTime ().

      long time1 = getTime (дата1); // объявляет примитив time1 для date1 long time2 = getTime (date2); // объявляет примитив 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 (время2> время1) {System.out.println ("дата2 идет после даты1"); // печатаем, потому что time2> time1} else {System.out.println ("date2 раньше или равно date1"); }

  5. Проведите сравнение «равно». Используйте символ (==) для сравнения этих двух целых чисел. Поскольку time1 равно time3, должно быть напечатано первое сообщение. Если программа переходит к оператору else, это означает, что времена не совпадают.

      if (time1 == time2) {System.out.println ("Даты совпадают"); } else {System.out.println ("Даты не равны"); // печатаем, потому что time1! = time2}