Kotlin:
So sánh hai ngày

Cách thực hiện:

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

    // So sánh bằng cách sử dụng compareTo
    println(date1.compareTo(date2)) // -1 nếu date1 đến trước date2
}

Kết quả mẫu:

true
false
false
-1

Đi sâu vào vấn đề

Trước đây, Java cung cấp các lớp DateCalendar nhưng chúng không thân thiện với người sử dụng. Kotlin sử dụng các lớp tương tự phía dưới nhưng khuyến khích sử dụng gói java.time được giới thiệu trong Java 8 để có sự rõ ràng và tiện ích tốt hơn.

Có những lựa chọn thay thế như Instant cho các dấu thời gian, ZonedDateTime cho các ngày cụ thể theo múi giờ, hoặc sử dụng một thư viện bên thứ ba như Joda-Time. Hãy giữ ý các chi tiết triển khai — Instant sử dụng dấu thời gian Unix truyền thống trong khi LocalDate tách biệt điều này và xử lý một ngày hình thành không có thời gian hoặc múi giờ.

Biết lớp nào phù hợp nhất với nhu cầu của bạn là thiết yếu. LocalDate phù hợp cho hầu hết các so sánh ngày, nhưng để so sánh chính xác thời điểm trong thời gian, hãy cân nhắc ZonedDateTime hoặc Instant.

Xem thêm