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

Как сделать:

import java.time.LocalDate

fun main() {
    val date1 = LocalDate.of(2023, 4, 10)
    val date2 = LocalDate.of(2023, 5, 15)

    println(date1.isBefore(date2))  // true
    println(date1.isAfter(date2))   // false
    println(date1.isEqual(date2))   // false

    // Сравнение с использованием compareTo
    println(date1.compareTo(date2)) // -1, если date1 предшествует date2
}

Пример вывода:

true
false
false
-1

Подробнее

Исторически, Java предоставляла классы Date и Calendar, но они были не очень удобны в использовании. Kotlin использует аналогичные классы «под капотом», но рекомендует использовать пакет java.time, введенный в Java 8, для большей ясности и пользы.

Существуют альтернативы, такие как Instant для временных меток, ZonedDateTime для дат, специфических для часовых поясов, или использование сторонних библиотек, как Joda-Time. Имейте в виду детали реализации - Instant использует традиционную временную метку Unix, в то время как LocalDate абстрагируется от этого и работает с понятием дня без времени или часового пояса.

Знание, какой класс лучше всего подходит для ваших потребностей, является ключевым. LocalDate подходит для большинства сравнений дат, но для точного сравнения моментов времени стоит рассмотреть ZonedDateTime или Instant.

См. также