Сравнение двух экземпляров LocalDate в Java

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

Название метода Возвращаемое значение Когда использовать
isEqual() булев Чтобы проверить, являются ли две даты одним и тем же днем в календаре.
isBefore() булев Чтобы проверить, предшествует ли первая дата второй дате
isAfter() булев Чтобы проверить, наступила ли первая дата позже второй даты
сравнитьС() инт Чтобы получить детальное сравнение(отрицательное, нулевое, положительное)
равно() булев Чтобы проверить, совпадают ли две даты в календаре(включая проверку на null).

1. Методы isAfter(), isBefore() и isEqual()

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

  • boolean isAfter(LocalDate other) – проверяет, является ли указанная дата более поздней, чем другая дата.
  • boolean isBefore(LocalDate other) – проверяет, предшествует ли указанная дата другой дате.
  • boolean isEqual(LocalDate other) – Проверяет, равна ли указанная дата другой дате.
LocalDate today = LocalDate.now();LocalDate pastDate = LocalDate.parse("2022-01-04");boolean isBefore = today.isBefore(pastDate); //falseboolean isAfter = today.isAfter(pastDate); //trueboolean isEqual = today.isEqual(LocalDate.of(2022, 1, 9)); //false

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

Метод compareTo() сравнивает два экземпляра для значений на основе даты(день, месяц, год) и возвращает целочисленное значение на основе сравнения.

public int compareTo(ChronoLocalDate otherDate)
  • 0(Ноль), если обе даты представляют одну и ту же календарную дату.
  • Положительное целое число, если указанная дата позже, чем otherDate.
  • Отрицательное целое число, если указанная дата раньше, чем otherDate.
LocalDate today = LocalDate.now();LocalDate pastDate = LocalDate.parse("2022-01-04");int compareValue = today.compareTo(pastDate);if(compareValue > 0) {System.out.println("today is latter than 4th-Jan-2022");} else if(compareValue < 0) {System.out.println("today is earlier than 4th-Jan-2022");} else {System.out.println("both dates are equal");}

3. Метод LocalDate equals()

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

Метод boolean equals(LocalDate otherDate) возвращает:

  • true – указанная дата совпадает с otherDate.
  • false – указанная дата НЕ совпадает с otherDate.
boolean isEqual = LocalDate.parse("2019-04-09").equals(LocalDate.of(2019, 4, 9)); //trueboolean isEqual = LocalDate.parse("2019-04-09").equals(LocalDate.of(2019, 1, 1)); //false

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

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