มีหลายวิธีในการเปรียบเทียบวันที่สองวันในภาษาการเขียนโปรแกรม Java ในคอมพิวเตอร์ วันที่จะแสดงด้วยตัวเลข (ชนิดข้อมูล Long) ในหน่วยของเวลา นั่นคือจำนวนมิลลิวินาทีที่ผ่านไปตั้งแต่วันที่ 1 มกราคม 1970 ใน Java Date เป็นอ็อบเจ็กต์ ซึ่งหมายความว่ามี หลายวิธีในการเปรียบเทียบ วิธีใดๆ ที่ใช้เปรียบเทียบวันที่สองวันคือการเปรียบเทียบหน่วยเวลาของวันที่ทั้งสอง
ขั้นตอน
วิธีที่ 1 จาก 4: การใช้ CompareTo

ขั้นตอนที่ 1. ใช้ CompareTo
ออบเจ็กต์ Date ใช้ Comparable เพื่อให้สามารถเปรียบเทียบวันที่ 2 กันได้โดยตรงกับเมธอด CompareTo หากวันที่ทั้งสองมีตัวเลขเท่ากันในหน่วยเวลา เมธอดจะคืนค่าศูนย์ ถ้าวันที่ที่สองน้อยกว่าวันแรก ค่าที่น้อยกว่าศูนย์จะถูกส่งกลับ ถ้าวันที่ที่สองมากกว่าวันแรก วิธีการส่งกลับค่าที่มากกว่าศูนย์ หากวันที่ทั้งสองเหมือนกัน เมธอดจะคืนค่าเป็นโมฆะ

ขั้นตอนที่ 2 สร้างวัตถุวันที่หลายรายการ
คุณต้องสร้างออบเจ็กต์ Date หลายรายการก่อนที่จะเปรียบเทียบ วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการใช้คลาส SimpleDateFormat คลาสนี้ทำให้ง่ายต่อการแปลงค่าวันที่อินพุตเป็นอ็อบเจ็กต์ Date
SimpleDateFormat sdf = SimpleDateFormat ใหม่ ("yyyy-MM-dd") หากต้องการประกาศค่าใน "Object Date" ใหม่ ให้ใช้รูปแบบวันที่เดียวกันเมื่อสร้างวันที่ วันที่ date1 = sdf.parse("1995-02-23"); //date1 คือ 23 กุมภาพันธ์ 1995 วันที่ date2 = sdf.parse("2001-10-31"); //date2 คือ 31 ตุลาคม 2544 วันที่ date3 = sdf.parse("1995-02-23"); //date3 คือ 23 กุมภาพันธ์ 1995
![]()
4301351 3 ขั้นตอนที่ 3 เปรียบเทียบวัตถุวันที่
รหัสต่อไปนี้จะแสดงตัวอย่างสำหรับแต่ละกรณี -- น้อยกว่า เท่ากับ และมากกว่า
date1.compareTo(วันที่2); //date1 < date2 ส่งคืนค่าที่น้อยกว่า 0 date2.compareTo(date1); //date2 > date1 ส่งคืนค่าที่มากกว่า 0 date1.compareTo(date3); //date1 = date3 ดังนั้นมันจะส่งออก 0 บน console
วิธีที่ 2 จาก 4: ใช้เท่ากับ หลัง และก่อน
![]()
4301351 4 ขั้นตอนที่ 1. ใช้เท่ากับ หลัง และ ก่อน
วันที่สามารถเปรียบเทียบได้โดยใช้วิธีเท่ากับ หลัง และก่อน หากวันที่สองวันมีค่าเท่ากันในเวลา วิธีเท่ากับจะส่งกลับ true ตัวอย่างต่อไปนี้จะใช้อ็อบเจ็กต์ Date ที่สร้างในตัวอย่างเมธอด CompareTo
![]()
4301351 5 ขั้นตอนที่ 2. เปรียบเทียบกับวิธีก่อน
รหัสต่อไปนี้แสดงกรณีตัวอย่างที่คืนค่า true และ false ถ้า date1 เป็นวันที่ก่อน date2 วิธี before จะส่งกลับ true มิฉะนั้น วิธี before จะส่งกลับค่า false
System.out.print(date1.before(date2)); ระบบ // แสดงค่า ''จริง'' System.out.print(date2.before(date2)); // คืนค่า '' เท็จ ''
![]()
4301351 6 ขั้นตอนที่ 3 เปรียบเทียบโดยใช้วิธีหลัง
รหัสต่อไปนี้แสดงกรณีตัวอย่างที่คืนค่า true และ false ถ้า date2 เป็นวันที่หลังจาก date1 เมธอด after จะคืนค่า true มิฉะนั้นเมธอด after จะคืนค่า false
System.out.print(date2.after(date1)); // แสดงค่า ''true'' System.out.print(date1.after(date2)); // แสดงค่า ''false''
![]()
4301351 7 ขั้นตอนที่ 4 เปรียบเทียบกับวิธีเท่ากับ
รหัสต่อไปนี้แสดงกรณีตัวอย่างที่คืนค่า true และ false หากวันที่ทั้งสองเท่ากัน เมธอด equals จะคืนค่า true มิฉะนั้น เมธอด equals จะคืนค่า false
System.out.print(date1.equals(date3)); // แสดงค่า ''true'' System.out.print(date1.equals(date2)); // แสดงค่า ''false''
วิธีที่ 3 จาก 4: การใช้ Class Calendar
![]()
4301351 8 ขั้นตอนที่ 1. ใช้ปฏิทินของชั้นเรียน
คลาสปฏิทินยังมีวิธี CompareTo, equals, after และ before ที่ทำงานเหมือนกับที่อธิบายไว้ก่อนหน้าสำหรับคลาส Date ดังนั้น หากข้อมูลวันที่ถูกเก็บไว้ในปฏิทินของชั้นเรียน คุณไม่จำเป็นต้องดึงข้อมูลวันที่เพียงเพื่อเปรียบเทียบ
![]()
4301351 9 ขั้นตอนที่ 2 สร้างอินสแตนซ์ของปฏิทิน
ในการใช้เมธอดใน Class Calendar คุณต้องสร้างอินสแตนซ์ปฏิทินหลายรายการ โชคดีที่คุณสามารถใช้ค่าจากอินสแตนซ์ Date ที่สร้างไว้ก่อนหน้านี้ได้
ปฏิทิน cal1 = Calendar.getInstance(); //ประกาศ cal1 ปฏิทิน cal2 = Calendar.getInstance(); //ประกาศ cal2 ปฏิทิน cal3 = Calendar.getInstance(); //ประกาศ cal3 cal1.setTime(date1); //ใส่วันที่ลงใน cal1 cal2.setTime(date2); cal3.setTime(วันที่3);
![]()
4301351 10 ขั้นตอนที่ 3 เปรียบเทียบ cal1 และ cal2 โดยใช้วิธี before
รหัสต่อไปนี้จะส่งออกค่าของtr
System.out.print(cal1.before(cal2)); //จะส่งกลับค่า''จริง''
![]()
4301351 11 ขั้นตอนที่ 4 เปรียบเทียบ cal1 และ cal2 โดยใช้วิธี after
รหัสต่อไปนี้จะคืนค่าเท็จเนื่องจาก cal1 เป็นวันที่ก่อน cal2
System.out.print(cal1.after(cal2)); // คืนค่า '' เท็จ ''
![]()
4301351 12 ขั้นตอนที่ 5. เปรียบเทียบ cal1 และ cal2 โดยใช้วิธีเท่ากับ
รหัสต่อไปนี้จะแสดงกรณีตัวอย่างที่คืนค่า true และ false สถานะขึ้นอยู่กับอินสแตนซ์ของปฏิทินที่กำลังเปรียบเทียบ รหัสต่อไปนี้จะส่งคืนค่า "จริง" จากนั้น "เท็จ" ในบรรทัดถัดไป
System.out.println(cal1.equals(cal3)); // คืนค่า ''จริง'': cal1 == cal3 System.out.print(cal1.equals(cal2)); // คืนค่า ''false'': cal1 != cal2
วิธีที่ 4 จาก 4: การใช้ getTime
![]()
4301351 13 ขั้นตอนที่ 1. ใช้ getTime
คุณยังสามารถเปรียบเทียบค่าหน่วยเวลาของวันที่สองวันได้โดยตรง แม้ว่าสองวิธีก่อนหน้านี้อาจอ่านง่ายกว่าและดีกว่า ด้วยวิธีนี้ คุณจะเปรียบเทียบประเภทข้อมูลดั้งเดิม 2 ประเภท เพื่อให้คุณสามารถใช้ตัวถูกดำเนินการ "" และ "=="
![]()
4301351 14 ขั้นตอนที่ 2 สร้างวัตถุเวลาในรูปแบบตัวเลขยาว
ก่อนที่คุณจะเปรียบเทียบวันที่ คุณต้องสร้างค่า Long Integer จากออบเจ็กต์ Date ที่สร้างไว้ก่อนหน้านี้ โชคดีที่เมธอด getTime() ช่วยคุณได้
เวลานาน 1 = getTime (วันที่ 1); //ประกาศ primitive time1 ของ date1 long time2 = getTime(date2); //ประกาศค่า primitive time2 ของ date2
![]()
4301351 15 ขั้นตอนที่ 3 ดำเนินการน้อยกว่าการเปรียบเทียบ
ใช้ตัวถูกดำเนินการน้อยกว่า (<) เพื่อเปรียบเทียบค่าจำนวนเต็มสองค่านี้ เนื่องจาก time1 น้อยกว่า time2 ข้อความแรกจะปรากฏขึ้น คำสั่ง else จะรวมไว้เพื่อทำให้ไวยากรณ์สมบูรณ์
if(time1 <time2){ System.out.println("date1 คือวันที่ก่อน date2"); //จะแสดงเพราะ time1 < time2 } else { System.out.println("date1 is not a date before date2"); }
![]()
4301351 16 ขั้นตอนที่ 4 ดำเนินการมากกว่าการเปรียบเทียบ
ใช้ตัวถูกดำเนินการมากกว่า (>) เพื่อเปรียบเทียบค่าจำนวนเต็มสองค่านี้ เนื่องจาก time1 มากกว่า time2 ข้อความแรกจะปรากฏขึ้น คำสั่ง else จะรวมไว้เพื่อทำให้ไวยากรณ์สมบูรณ์
if(time2 > time1){ System.out.println("date2 คือวันที่หลัง date1"); //จะแสดงเพราะ time2 > time1 } else { System.out.println("date2 ไม่ใช่วันที่หลัง date1"); }
![]()
4301351 17 ขั้นตอนที่ 5. ทำการเปรียบเทียบเท่ากับ
ใช้ฟังก์ชันตัวถูกดำเนินการเพื่อตรวจสอบความเท่าเทียมกันของค่า (==) เพื่อเปรียบเทียบจำนวนเต็มทั้งสองนี้ เนื่องจาก time1 เท่ากับ time3 ข้อความแรกจะปรากฏขึ้น หากการไหลของโปรแกรมเข้าสู่คำสั่ง else แสดงว่าสองครั้งไม่มีค่าเท่ากัน
if(time1 == time2){ System.out.println("วันที่ทั้งสองเหมือนกัน"); } else{ System.out.println("อันที่ 1 ไม่เหมือนกับอันที่ 2"); //จะแสดงเพราะ time1 != time2 }