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

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

วิธีการ:

Java ทำให้การเปรียบเทียบวันที่ง่ายมาก เพียงแค่ใช้ LocalDate และเมธอด compareTo, isBefore, หรือ isAfter นี่คือสาระสำคัญ:

import java.time.LocalDate;

public class DateComparison {
    public static void main(String[] args) {
        LocalDate date1 = LocalDate.of(2023, 4, 1);
        LocalDate date2 = LocalDate.now(); // สมมติว่าวันนี้คือ 2023-4-15

        // การใช้ compareTo
        int comparisonResult = date1.compareTo(date2);
        if(comparisonResult < 0) {
            System.out.println("Date1 อยู่ก่อน Date2");
        } else if (comparisonResult > 0) {
            System.out.println("Date1 อยู่หลัง Date2");
        } else {
            System.out.println("Date1 เท่ากับ Date2");
        }

        // การใช้ isBefore และ isAfter
        if(date1.isBefore(date2)) {
            System.out.println("Date1 อยู่ก่อนหน้า Date2");
        } else if(date1.isAfter(date2)) {
            System.out.println("Date1 อยู่หลังจาก Date2");
        } else {
            System.out.println("Date1 เป็นวันเดียวกันกับ Date2");
        }
    }
}

ผลลัพธ์ตัวอย่างสำหรับวันที่ของวันนี้คือ 2023-04-15:

Date1 อยู่ก่อน Date2
Date1 อยู่ก่อนหน้า Date2

การศึกษาลึก

ในอดีตการจัดการวันที่ของ Java นั้น อืม ทำให้ปวดหัว แต่แล้ว Java 8 ก็มาพร้อมกับ java.time, ซึ่งเป็นการเปลี่ยนเกม ตอนนี้เราใช้ LocalDate สำหรับวันที่ที่ไม่มีเวลา อยากเปรียบเทียบวันที่ที่รวมเวลาด้วยเหรอ? ต้องดูที่ LocalDateTime การอื่นๆ? แน่นอน ก่อน Java 8 มี java.util.Date และ java.util.Calendar คุณยังสามารถใช้พวกเขาได้ แต่ทำไมต้องคุ้ยหาปัญหาให้ตัวเอง?

ในแง่ของการปฏิบัติ, compareTo จะคืนค่า int: ลบถ้าวัตถุที่เรียกน้อยกว่า (ก่อน), ศูนย์ถ้าเท่ากัน, บวกถ้ามากกว่า (หลัง) isBefore และ isAfter คืนค่า boolean เข้าใจง่าย และไม่มีปัญหาซ่อนเร้น

ดูเพิ่มเติม

สำหรับรายละเอียดเพิ่มเติม ดำดิ่งลงไปในเหล่านี้: