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/