Сравните два экземпляра LocalDateTime

Научитесь сравнивать два экземпляра LocalDateTime, чтобы узнать, какая дата представляет более старую временную метку по сравнению с другой. Класс LocalDateTime является частью пакета java.time, добавленного в Java 8.

1. isAfter(), isBefore() и isEqual()

Рекомендуемый способ сравнения двух объектов LocalDateTime — использование предоставленных методов, которые сравнивают обе части даты и времени и возвращают логическое значение — true или false. Эти методы учитывают только положение двух дат на локальной временной шкале и не учитывают хронологию или календарную систему.

  • boolean isAfter(otherDateTime) – проверяет, является ли указанная дата-время более поздней, чем другая дата-время.
  • boolean isBefore(otherDateTime) – проверяет, предшествует ли указанная дата-время другой дате-времени.
  • boolean isEqual(otherDateTime) – проверяет, равна ли указанная дата-время другой дате-времени.
LocalDateTime now = LocalDateTime.now();LocalDateTime pastDate = LocalDateTime.parse("2017-01-14T15:32:56.000");boolean isBefore = now.isBefore(pastDate); //falseboolean isAfter = now.isAfter(pastDate); //trueboolean isEqual = now.isEqual(pastDate); //false20

2. Метод сравнения LocalDateTimeTo()

Метод compareTo() сравнивает два локальных объекта даты и времени и возвращает целочисленное значение на основе сравнения. Эти методы сравнивают экземпляры без учета часового пояса или календарной информации.

Метод int compareTo(otherDateTime) возвращает:

  • 0(Ноль), если обе даты и времени представляют один и тот же момент времени дня.
  • Положительное целое число, если указанная дата-время позже, чем otherDate.
  • Отрицательное целое число, если указанная дата/время раньше, чем otherDate.
LocalDateTime ldt1 = LocalDateTime.parse("2019-04-28T22:32:38.536");LocalDateTime ldt2 = LocalDateTime.parse("2017-01-14T15:32:56.000");int diff = ldt1.compareTo(ldt2);System.out.println("Compare value = " + diff); //2if(diff > 0) {System.out.println("ldt1 is later than ldt2"); //Prints it} else if(diff < 0) {System.out.println("ldt1 is earlier than ldt2");} else {System.out.println("both dates are equal");}

3. Метод LocalDateTime equals()

Если мы хотим только проверить, равны ли значения даты и времени или нет(т.е. представляют ли они одно и то же время дня на локальной временной шкале), мы можем использовать метод equals(). Этот метод возвращает:

  • true – указанная дата совпадает с otherDate.
  • false – указанная дата НЕ совпадает с otherDate.
LocalDateTime ldt1 = LocalDateTime.of(2019, 4, 9, 10, 10, 50);LocalDateTime ldt2 = LocalDateTime.of(2019, 4, 9, 10, 10, 50);LocalDateTime ldt3 = LocalDateTime.of(2019, 4, 9, 11, 12, 50);System.out.println(ldt1.equals(ldt2)); //trueSystem.out.println(ldt1.equals(ldt3)); //false

Исходный код на Github

Прокрутить вверх