มีหลายวิธีในการเปรียบเทียบวันที่สองวันในภาษาการเขียนโปรแกรม 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
ขั้นตอนที่ 3 เปรียบเทียบวัตถุวันที่
รหัสต่อไปนี้จะแสดงตัวอย่างสำหรับแต่ละกรณี -- น้อยกว่า เท่ากับ และมากกว่า
date1.compareTo(วันที่2); //date1 < date2 ส่งคืนค่าที่น้อยกว่า 0 date2.compareTo(date1); //date2 > date1 ส่งคืนค่าที่มากกว่า 0 date1.compareTo(date3); //date1 = date3 ดังนั้นมันจะส่งออก 0 บน console
วิธีที่ 2 จาก 4: ใช้เท่ากับ หลัง และก่อน
ขั้นตอนที่ 1. ใช้เท่ากับ หลัง และ ก่อน
วันที่สามารถเปรียบเทียบได้โดยใช้วิธีเท่ากับ หลัง และก่อน หากวันที่สองวันมีค่าเท่ากันในเวลา วิธีเท่ากับจะส่งกลับ true ตัวอย่างต่อไปนี้จะใช้อ็อบเจ็กต์ Date ที่สร้างในตัวอย่างเมธอด CompareTo
ขั้นตอนที่ 2. เปรียบเทียบกับวิธีก่อน
รหัสต่อไปนี้แสดงกรณีตัวอย่างที่คืนค่า true และ false ถ้า date1 เป็นวันที่ก่อน date2 วิธี before จะส่งกลับ true มิฉะนั้น วิธี before จะส่งกลับค่า false
System.out.print(date1.before(date2)); ระบบ // แสดงค่า ''จริง'' System.out.print(date2.before(date2)); // คืนค่า '' เท็จ ''
ขั้นตอนที่ 3 เปรียบเทียบโดยใช้วิธีหลัง
รหัสต่อไปนี้แสดงกรณีตัวอย่างที่คืนค่า true และ false ถ้า date2 เป็นวันที่หลังจาก date1 เมธอด after จะคืนค่า true มิฉะนั้นเมธอด after จะคืนค่า false
System.out.print(date2.after(date1)); // แสดงค่า ''true'' System.out.print(date1.after(date2)); // แสดงค่า ''false''
ขั้นตอนที่ 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
ขั้นตอนที่ 1. ใช้ปฏิทินของชั้นเรียน
คลาสปฏิทินยังมีวิธี CompareTo, equals, after และ before ที่ทำงานเหมือนกับที่อธิบายไว้ก่อนหน้าสำหรับคลาส Date ดังนั้น หากข้อมูลวันที่ถูกเก็บไว้ในปฏิทินของชั้นเรียน คุณไม่จำเป็นต้องดึงข้อมูลวันที่เพียงเพื่อเปรียบเทียบ
ขั้นตอนที่ 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);
ขั้นตอนที่ 3 เปรียบเทียบ cal1 และ cal2 โดยใช้วิธี before
รหัสต่อไปนี้จะส่งออกค่าของtr
System.out.print(cal1.before(cal2)); //จะส่งกลับค่า''จริง''
ขั้นตอนที่ 4 เปรียบเทียบ cal1 และ cal2 โดยใช้วิธี after
รหัสต่อไปนี้จะคืนค่าเท็จเนื่องจาก cal1 เป็นวันที่ก่อน cal2
System.out.print(cal1.after(cal2)); // คืนค่า '' เท็จ ''
ขั้นตอนที่ 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
ขั้นตอนที่ 1. ใช้ getTime
คุณยังสามารถเปรียบเทียบค่าหน่วยเวลาของวันที่สองวันได้โดยตรง แม้ว่าสองวิธีก่อนหน้านี้อาจอ่านง่ายกว่าและดีกว่า ด้วยวิธีนี้ คุณจะเปรียบเทียบประเภทข้อมูลดั้งเดิม 2 ประเภท เพื่อให้คุณสามารถใช้ตัวถูกดำเนินการ "" และ "=="
ขั้นตอนที่ 2 สร้างวัตถุเวลาในรูปแบบตัวเลขยาว
ก่อนที่คุณจะเปรียบเทียบวันที่ คุณต้องสร้างค่า Long Integer จากออบเจ็กต์ Date ที่สร้างไว้ก่อนหน้านี้ โชคดีที่เมธอด getTime() ช่วยคุณได้
เวลานาน 1 = getTime (วันที่ 1); //ประกาศ primitive time1 ของ date1 long time2 = getTime(date2); //ประกาศค่า primitive time2 ของ date2
ขั้นตอนที่ 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"); }
ขั้นตอนที่ 4 ดำเนินการมากกว่าการเปรียบเทียบ
ใช้ตัวถูกดำเนินการมากกว่า (>) เพื่อเปรียบเทียบค่าจำนวนเต็มสองค่านี้ เนื่องจาก time1 มากกว่า time2 ข้อความแรกจะปรากฏขึ้น คำสั่ง else จะรวมไว้เพื่อทำให้ไวยากรณ์สมบูรณ์
if(time2 > time1){ System.out.println("date2 คือวันที่หลัง date1"); //จะแสดงเพราะ time2 > time1 } else { System.out.println("date2 ไม่ใช่วันที่หลัง date1"); }
ขั้นตอนที่ 5. ทำการเปรียบเทียบเท่ากับ
ใช้ฟังก์ชันตัวถูกดำเนินการเพื่อตรวจสอบความเท่าเทียมกันของค่า (==) เพื่อเปรียบเทียบจำนวนเต็มทั้งสองนี้ เนื่องจาก time1 เท่ากับ time3 ข้อความแรกจะปรากฏขึ้น หากการไหลของโปรแกรมเข้าสู่คำสั่ง else แสดงว่าสองครั้งไม่มีค่าเท่ากัน
if(time1 == time2){ System.out.println("วันที่ทั้งสองเหมือนกัน"); } else{ System.out.println("อันที่ 1 ไม่เหมือนกับอันที่ 2"); //จะแสดงเพราะ time1 != time2 }