Сравнение двух дат

Java:
Сравнение двух дат

Как:

Java значительно упрощает сравнение дат. Используйте LocalDate и методы compareTo, isBefore или isAfter. Вот краткое руководство:

import java.time.LocalDate;

public class DateComparison {
    public static void main(String[] args) {
        LocalDate date1 = LocalDate.of(2023, 4, 1);
        LocalDate date2 = LocalDate.now(); // предположим, что сегодня 2023-4-15

        // Использование compareTo
        int comparisonResult = date1.compareTo(date2);
        if(comparisonResult < 0) {
            System.out.println("Date1 предшествует Date2");
        } else if (comparisonResult > 0) {
            System.out.println("Date1 следует за Date2");
        } else {
            System.out.println("Date1 совпадает c Date2");
        }

        // Использование isBefore и isAfter
        if(date1.isBefore(date2)) {
            System.out.println("Date1 раньше, чем Date2");
        } else if(date1.isAfter(date2)) {
            System.out.println("Date1 позже, чем Date2");
        } else {
            System.out.println("Date1 тот же самый день, что и Date2");
        }
    }
}

Пример вывода для сегодняшней даты 2023-04-15:

Date1 предшествует Date2
Date1 раньше, чем Date2

Подробнее

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

Альтернативы? Конечно. До Java 8 были java.util.Date и java.util.Calendar. Вы все еще можете их использовать, но зачем себе усложнять жизнь?

С точки зрения реализации, compareTo возвращает int: отрицательное значение, если вызывающий объект меньше (ранее), ноль, если равен, положительное значение, если больше (позже). isBefore и isAfter возвращают boolean. Легко понять и без подводных камней.

См. также

Для получения дополнительной информации изучите следующие ресурсы: