เปรียบเทียบสองวันที่

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))  // จริง
    println(date1.isAfter(date2))   // เท็จ
    println(date1.isEqual(date2))   // เท็จ

    // เปรียบเทียบโดยใช้ compareTo
    println(date1.compareTo(date2)) // -1 ถ้า date1 อยู่ก่อน date2
}

ผลลัพธ์ตัวอย่าง:

จริง
เท็จ
เท็จ
-1

ลงลึก

ในอดีต Java มีคลาส Date และ Calendar แต่ไม่เป็นมิตรกับผู้ใช้มากนัก Kotlin ใช้คลาสที่คล้ายกันโดยภายใน แต่สนับสนุนการใช้งานแพ็กเกจ java.time ที่ถูกนำมาใช้ใน Java 8 เพื่อความชัดเจนและประโยชน์ที่ดีขึ้น

มีทางเลือกอื่นๆ เช่น Instant สำหรับการประทับเวลา ZonedDateTime สำหรับวันที่เฉพาะเขตเวลา หรือการใช้ไลบรารีของบุคคลที่สาม เช่น Joda-Time ควรคำนึงถึงรายละเอียดการนำไปใช้—Instant ใช้การประทับเวลา Unix แบบดั้งเดิม ในขณะที่ LocalDate ไม่แสดงที่ละเอียดนี้และจัดการกับวันโดยไม่มีเวลาหรือเขตเวลา

การรู้ว่าคลาสใดเหมาะสมกับความต้องการของคุณที่สุดเป็นสิ่งสำคัญ LocalDate เพียงพอสำหรับการเปรียบเทียบวันที่ส่วนใหญ่ แต่สำหรับการเปรียบเทียบช่วงเวลาจริง ๆ ควรพิจารณา ZonedDateTime หรือ Instant

ดูเพิ่มเติม