มีหลายวิธีในการเปรียบเทียบวันที่ของ Java ภายในวันที่จะแสดงเป็นจุด (ยาว) ในเวลา -- จำนวนมิลลิวินาทีที่ผ่านไปตั้งแต่วันที่ 1 มกราคม 1970 ใน Java วันที่เป็นอ็อบเจ็กต์ ซึ่งหมายความว่ามีหลายวิธีสำหรับการเปรียบเทียบ วิธีการใดๆ ในการเปรียบเทียบวันที่ทั้งสองจะเปรียบเทียบเวลาของวันที่เป็นหลัก
ขั้นตอน
วิธีที่ 1 จาก 4: การใช้ CompareTo
ขั้นตอนที่ 1 ใช้ CompareTo
วันที่ดำเนินการ เปรียบเทียบได้ ดังนั้นวันที่สองวันสามารถเปรียบเทียบโดยตรงกับเมธอด CompareTo ถ้าวันที่เป็นช่วงเวลาเดียวกัน เมธอดจะคืนค่าศูนย์ ถ้าวันที่ที่ถูกเปรียบเทียบอยู่ก่อนอาร์กิวเมนต์ date ค่าที่น้อยกว่าศูนย์จะถูกส่งกลับ ถ้าวันที่ที่ถูกเปรียบเทียบอยู่หลังอาร์กิวเมนต์ date ค่าที่มากกว่าศูนย์จะถูกส่งกลับ ถ้าวันที่เท่ากัน ค่า 0 จะถูกส่งกลับ
ขั้นตอนที่ 2 สร้างวัตถุวันที่
คุณจะต้องสร้างแต่ละอ็อบเจ็กต์วันที่ก่อนจึงจะเริ่มเปรียบเทียบได้ วิธีหนึ่งในการทำเช่นนี้คือการใช้คลาส SimpleDateFormat ช่วยให้ป้อนค่าวันที่ลงในวัตถุวันที่ได้ง่าย
SimpleDateFormat sdf = SimpleDateFormat ใหม่ ("yyyy-MM-dd"); //สำหรับการประกาศค่าในวัตถุวันที่ใหม่ ใช้รูปแบบวันที่เดียวกันเมื่อสร้างวันที่ 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
ขั้นตอนที่ 3 เปรียบเทียบวัตถุวันที่
รหัสด้านล่างจะแสดงให้คุณเห็นแต่ละกรณี น้อยกว่า เท่ากับ และมากกว่า
date1.compareTo(วันที่2); //date1 < date2 ส่งคืนน้อยกว่า 0 date2.compareTo(date1); //date2 > date1 ส่งกลับค่าที่มากกว่า 0 date1.compareTo(date3); //date1 = date3 ดังนั้นจะพิมพ์ 0 ไปยัง console
วิธีที่ 2 จาก 4: ใช้เท่ากับ หลัง และก่อน
ขั้นตอนที่ 1 ใช้เท่ากับ หลัง และ ก่อน
วันที่สามารถเปรียบเทียบกับเมธอดเท่ากับ หลัง และก่อน หากวันที่สองวันอยู่ในช่วงเวลาเดียวกัน เมธอดเท่ากับจะคืนค่าเป็นจริง ตัวอย่างจะใช้วันที่ที่สร้างไว้ก่อนหน้านี้จากเมธอด CompareTo
ขั้นตอนที่ 2. เปรียบเทียบโดยใช้วิธี before
รหัสด้านล่างแสดงกรณีจริงและเท็จ ถ้า date1 อยู่ก่อน date2 ก่อนจะส่งกลับ true ถ้าไม่ใช่ ก่อนส่งคืนค่าเท็จ
System.out.print(วันที่1.ก่อน(วันที่2)); //พิมพ์จริง System.out.print(date2.before(date2)); //พิมพ์เท็จ
ขั้นตอนที่ 3 เปรียบเทียบโดยใช้วิธีหลัง
รหัสด้านล่างแสดงกรณีจริงและเท็จ ถ้า date2 อยู่หลัง date1 หลังจากคืนค่า true ถ้าไม่ใช่ หลังจากส่งกลับค่าเท็จ
System.out.print(date2.after(date1));// พิมพ์จริง System.out.print(date1.after(date2));// พิมพ์เป็นเท็จ
ขั้นตอนที่ 4 เปรียบเทียบโดยใช้วิธีเท่ากับ
รหัสด้านล่างแสดงกรณีจริงและเท็จ ถ้าวันที่เท่ากัน เท่ากับ คืนค่า true ถ้าไม่ใช่ เท่ากับ คืนค่าเท็จ
System.out.print(date1.equals(date3));// พิมพ์จริง System.out.print(date1.equals(date2));// พิมพ์เป็นเท็จ
วิธีที่ 3 จาก 4: การใช้คลาสปฏิทิน
ขั้นตอนที่ 1. ใช้ปฏิทิน
คลาสปฏิทินยังมีวิธี CompareTo, เท่ากับ, หลังและก่อนที่ทำงานในลักษณะเดียวกับที่อธิบายไว้ข้างต้นสำหรับคลาสวันที่ ดังนั้น หากข้อมูลวันที่ถูกเก็บไว้ในปฏิทิน ไม่จำเป็นต้องแยกวันที่เพื่อทำการเปรียบเทียบ
ขั้นตอนที่ 2 สร้างอินสแตนซ์ของปฏิทิน
หากต้องการใช้วิธีปฏิทิน คุณจะต้องมีอินสแตนซ์ของปฏิทินสองสามตัว โชคดีที่คุณสามารถคว้าเวลาจากอินสแตนซ์ Date ที่สร้างไว้แล้วได้
ปฏิทิน cal1 = Calendar.getInstance(); //ประกาศ cal1 ปฏิทิน cal2 = Calendar.getInstance(); //ประกาศ cal2 ปฏิทิน cal3 = Calendar.getInstance(); //ประกาศ cal3 cal1.setTime(date1); //ใช้วันที่กับ cal1 cal2.setTime(date2); cal3.setTime(วันที่3);
ขั้นตอนที่ 3 เปรียบเทียบ cal1 กับ cal2 ก่อนใช้
รหัสด้านล่างควรพิมพ์จริงเนื่องจาก cal1 มาก่อน cal2
System.out.print(cal1.before(cal2)); //จะพิมพ์ true
ขั้นตอนที่ 4 เปรียบเทียบ cal1 และ cal2 โดยใช้ after
รหัสด้านล่างควรพิมพ์เท็จเนื่องจาก cal1 มาก่อน cal2
System.out.print(cal1.after(cal2)); //พิมพ์เท็จ
ขั้นตอนที่ 5. เปรียบเทียบ cal1 และ cal2 โดยใช้เท่ากับ
รหัสด้านล่างจะแสดงตัวอย่างทั้งกรณีจริงและเท็จ เงื่อนไขขึ้นอยู่กับอินสแตนซ์ของปฏิทินที่กำลังเปรียบเทียบ รหัสควรพิมพ์ "จริง" จากนั้น "เท็จ" ในบรรทัดถัดไป
System.out.println(cal1.equals(cal3)); // พิมพ์จริง: cal1 == cal3 System.out.print(cal1.equals(cal2)); // พิมพ์เท็จ: cal1 != cal2
วิธีที่ 4 จาก 4: การใช้ getTime
ขั้นตอนที่ 1 ใช้ getTime
นอกจากนี้ยังสามารถเปรียบเทียบจุดเวลาของวันที่สองวันได้โดยตรง แม้ว่าวิธีการใดๆ ก่อนหน้านี้มีแนวโน้มที่จะอ่านง่ายกว่าและดีกว่า นี่จะเป็นการเปรียบเทียบข้อมูลพื้นฐานสองประเภท ดังนั้นจึงสามารถทำได้ด้วย "" และ "=="
ขั้นตอนที่ 2 สร้างวัตถุที่ใช้เวลานาน
ก่อนที่คุณจะเปรียบเทียบวันที่ คุณต้องสร้างจำนวนเต็มแบบยาวด้วยข้อมูลจากออบเจ็กต์ Date ที่สร้างไว้ก่อนหน้านี้ โชคดีที่เมธอด getTime() จะช่วยคุณได้มากที่สุด
เวลานาน 1 = getTime (วันที่ 1); //ประกาศ primitive time1 จาก date1 long time2 = getTime(date2); //ประกาศ primitive time2 จาก date2
ขั้นตอนที่ 3 ทำน้อยกว่าการเปรียบเทียบ
ใช้สัญลักษณ์น้อยกว่า (<) เพื่อเปรียบเทียบค่าจำนวนเต็มสองค่านี้ เนื่องจาก time1 น้อยกว่าเวลา 2 ข้อความแรกควรพิมพ์ออกมา คำสั่ง else ถูกรวมไว้สำหรับไวยากรณ์ที่เหมาะสม
if(time1 <time2){ System.out.println("date1 ก่อน date2"); //จะพิมพ์ตั้งแต่ time1 <time2 } else { System.out.println("date1 is not before date2"); }
ขั้นตอนที่ 4 ทำมากกว่าการเปรียบเทียบ
ใช้สัญลักษณ์มากกว่า (>) เพื่อเปรียบเทียบค่าจำนวนเต็มสองค่านี้ เนื่องจาก time1 มากกว่าเวลา 2 ข้อความแรกควรพิมพ์ออกมา คำสั่ง else ถูกรวมไว้สำหรับไวยากรณ์ที่เหมาะสม
if(time2 > time1){ System.out.println("date2 อยู่หลัง date1"); //จะพิมพ์ตั้งแต่ time2 > time1 } else { System.out.println("date2 is not after date1"); }
ขั้นตอนที่ 5. ทำการเปรียบเทียบเท่ากับ
ใช้สัญลักษณ์เพื่อตรวจสอบความเท่าเทียมกัน (==) เพื่อเปรียบเทียบค่าจำนวนเต็มทั้งสองนี้เพื่อความเท่าเทียมกัน เนื่องจาก time1 เท่ากับ time3 ข้อความแรกควรพิมพ์ออกมา หากโปรแกรมไปถึงคำสั่ง else แสดงว่าเวลาไม่เท่ากัน
if(time1 == time2){ System.out.println("วันที่เท่ากัน"); } else{ System.out.println("วันที่ไม่เท่ากัน"); //จะพิมพ์ตั้งแต่ time1 != time2 }