Научитесь сравнивать два экземпляра 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