Java:
So sánh hai ngày

Làm thế nào:

Java làm cho việc so sánh ngày tháng trở nên khá dễ dàng. Sử dụng LocalDate và các phương thức compareTo, isBefore, hoặc isAfter. Dưới đây là phần mô tả ngắn gọn:

import java.time.LocalDate;

public class DateComparison {
    public static void main(String[] args) {
        LocalDate date1 = LocalDate.of(2023, 4, 1);
        LocalDate date2 = LocalDate.now(); // giả sử hôm nay là 2023-4-15

        // Sử dụng compareTo
        int ketQuaSoSanh = date1.compareTo(date2);
        if (ketQuaSoSanh < 0) {
            System.out.println("Date1 đến trước Date2");
        } else if (ketQuaSoSanh > 0) {
            System.out.println("Date1 đến sau Date2");
        } else {
            System.out.println("Date1 trùng khớp với Date2");
        }

        // Sử dụng isBefore và isAfter
        if (date1.isBefore(date2)) {
            System.out.println("Date1 sớm hơn Date2");
        } else if (date1.isAfter(date2)) {
            System.out.println("Date1 muộn hơn Date2");
        } else {
            System.out.println("Date1 cùng ngày với Date2");
        }
    }
}

Kết quả mẫu cho ngày hôm nay là 2023-04-15:

Date1 đến trước Date2
Date1 sớm hơn Date2

Sâu hơn

Trước đây, việc xử lý ngày tháng trong Java thực sự là một cơn đau đầu. Nhưng rồi Java 8 đã xuất hiện với java.time, một bước tiến lớn. Bây giờ, chúng ta sử dụng LocalDate cho các ngày không bao gồm thời gian. Muốn so sánh ngày cả khi có thời gian? Hãy nhìn vào LocalDateTime.

Có phương pháp khác không? Chắc chắn rồi. Trước Java 8, đã có java.util.Datejava.util.Calendar. Bạn vẫn có thể sử dụng chúng, nhưng tại sao lại tự gây khó dễ cho mình?

Về mặt thực hiện, compareTo trả về int: âm nếu đối tượng gọi nhỏ hơn (đến trước), không nếu bằng, dương nếu lớn hơn (đến sau). isBeforeisAfter trả về boolean. Dễ hiểu và không có bẫy.

Xem Thêm

Để biết thêm chi tiết, hãy tham khảo những nguồn sau: