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.
См. также
- Официальная документация Kotlin по датам и времени: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.time/
- Руководство Java 8 по дате и времени: https://www.oracle.com/technical-resources/articles/java/jf14-date-time.html
- Библиотека Joda-Time: https://www.joda.org/joda-time/