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
เข้าใจง่าย และไม่มีปัญหาซ่อนเร้น
ดูเพิ่มเติม
สำหรับรายละเอียดเพิ่มเติม ดำดิ่งลงไปในเหล่านี้:
- เอกสารจาวาของ Oracle เกี่ยวกับ LocalDate
- การสอนของ Oracle เกี่ยวกับวันเวลา
- Stack Overflow สำหรับการใช้งานและการแก้ปัญหาในโลกแห่งความจริง: