เปรียบเทียบวันที่ใน Java

ผู้เขียน: Roger Morrison
วันที่สร้าง: 24 กันยายน 2021
วันที่อัปเดต: 1 กรกฎาคม 2024
Anonim
Java Date and Time
วิดีโอ: Java Date and Time

เนื้อหา

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

ที่จะก้าว

วิธีที่ 1 จาก 4: ใช้คำสั่ง "CompareTo"

  1. ใช้ CompareTo วันที่ใช้ ComparableDate> ดังนั้นวันที่สองวันสามารถเปรียบเทียบกันได้โดยตรงโดยใช้เมธอด CompareTo หากวันที่ระบุช่วงเวลาเดียวกันเมธอดจะคืนค่าเป็นศูนย์ หากวันที่ที่กำลังเปรียบเทียบอยู่ก่อนอาร์กิวเมนต์วันที่ค่าลบจะถูกส่งกลับ หากวันที่ที่กำลังเปรียบเทียบเป็นวันที่ช้ากว่าของอาร์กิวเมนต์วันที่ค่าบวกจะถูกส่งกลับ หากวันที่เหมือนกันระบบจะส่งคืนศูนย์
  2. สร้างวัตถุวันที่ คุณจะต้องสร้างวัตถุวันที่แต่ละชิ้นก่อนจึงจะเริ่มเปรียบเทียบได้ วิธีหนึ่งที่ทำได้คือใช้คลาส SimpleDateFormat สิ่งนี้ช่วยให้คุณป้อนวันที่ลงในวัตถุวันที่ได้อย่างง่ายดาย

      SimpleDateFormat sdf = SimpleDateFormat ใหม่ ("yyyy-MM-dd"); // สำหรับการประกาศค่าในออบเจ็กต์วันที่ใหม่ใช้รูปแบบวันที่เดียวกันเมื่อสร้างวันที่ Date date1 = sdf.parse ("1995-02-23"); // date1 คือ 23 กุมภาพันธ์ 2538 วันที่ date2 = sdf.parse ("2001-10-31"); // date2 คือ 31 ตุลาคม 2544 วันที่ date3 = sdf.parse ("1995-02-23"); // date3 คือ 23 กุมภาพันธ์ 1995

  3. เปรียบเทียบวัตถุวันที่ ด้านล่างแสดงแต่ละกรณี - น้อยกว่าเท่ากับและมากกว่า

      date1.compareTo (date2); // date1 date2 น้อยกว่า 0 date2.compareTo (date1); // date2> date1 ส่งกลับค่ามากกว่า 0 date1.compareTo (date3); // date1 = date3 ส่งกลับ 0

วิธีที่ 2 จาก 4: ใช้เมธอด "เท่ากับหลังและก่อน"

  1. ใช้เท่ากับหลังและก่อน วันที่สามารถเปรียบเทียบกันได้โดยใช้วิธีการเท่ากับหลังและก่อน หากวันที่สองวันแสดงเวลาเดียวกันเมธอดเท่ากับจะแสดงผลเป็น "จริง" ตัวอย่างใช้วันที่ที่สร้างไว้ก่อนหน้านี้ผ่านวิธีการ CompareTo
  2. เปรียบเทียบโดยใช้วิธีก่อน โค้ดด้านล่างแสดงกรณีของจริงและเท็จ ถ้า date1 เร็วกว่า date2 ผลลัพธ์จะเป็นจริง ถ้าไม่ก่อนส่งกลับเท็จ

      System.out.print (date1.before (date2)); // พิมพ์ True System.out.print (date2.before (date2)); // พิมพ์เท็จ

  3. เปรียบเทียบสิ่งนี้กับวิธี after โค้ดด้านล่างแสดงกรณีของจริงและเท็จ ถ้า date2 ช้ากว่า date1 หลังจากนั้นจะส่งกลับจริง หากไม่เป็นเช่นนั้นหลังจากส่งคืนเท็จ

      System.out.print (date2.after (date1)); // พิมพ์ true System.out.print (date1.after (date2)); // พิมพ์เท็จ

  4. เปรียบเทียบโดยใช้วิธีการเท่ากับ โค้ดด้านล่างแสดงกรณีของจริงและเท็จ หากวันที่เหมือนกันจะส่งกลับค่าเป็นจริง ถ้าไม่เท่ากับผลตอบแทนเท็จ

      System.out.print (date1.equals (date3)); // พิมพ์จริง System.out.print (date1.equals (date2)); // พิมพ์เท็จ

วิธีที่ 3 จาก 4: การใช้คลาสปฏิทิน

  1. ใช้คลาสปฏิทิน คลาสปฏิทินยังมีวิธีการ CompareTo เท่ากับหลังและก่อนซึ่งทำงานในลักษณะเดียวกับที่อธิบายไว้ข้างต้นสำหรับคลาสวันที่ ดังนั้นหากข้อมูลวันที่ถูกเก็บไว้ในปฏิทินก็ไม่จำเป็นต้องแยก "วันที่" เพียงเพื่อเปรียบเทียบวันที่สองวัน
  2. สร้างอินสแตนซ์ของปฏิทิน หากต้องการใช้วิธีปฏิทินคุณต้องมีอินสแตนซ์ของปฏิทิน โชคดีที่คุณสามารถใช้เวลาตามที่สร้างขึ้นโดยอินสแตนซ์วันที่

      ปฏิทิน cal1 = Calendar.getInstance (); // ประกาศ cal1 Calendar cal2 = Calendar.getInstance (); // ประกาศ cal2 Calendar cal3 = Calendar.getInstance (); // ประกาศ cal3 cal1.setTime (date1); // ใช้วันที่กับ cal1 cal2.setTime (date2); cal3.setTime (date3);

  3. เปรียบเทียบ cal1 และ cal2 ที่ใช้ก่อนหน้านี้ โค้ดด้านล่างส่งคืนจริงเนื่องจาก cal1 อยู่ก่อนหน้า cal2

      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)); // พิมพ์เท็จ: cal1! = cal2

วิธีที่ 4 จาก 4: ใช้เมธอด "getTime"

  1. ใช้ getTime นอกจากนี้ยังสามารถเปรียบเทียบจุดเวลาสองจุดได้โดยตรงแม้ว่าแนวทางใด ๆ ที่กล่าวมาข้างต้นมีแนวโน้มที่จะให้ผลลัพธ์ที่อ่านง่ายกว่าและเป็นที่ต้องการ นี่คือการเปรียบเทียบข้อมูลดั้งเดิมสองประเภทซึ่งสามารถทำได้ด้วย "", ">" และ "=="
  2. สร้างวัตถุเวลา "นาน" ก่อนที่คุณจะเปรียบเทียบวันที่คุณต้องสร้างจำนวนเต็มแบบยาวจากข้อมูลของออบเจ็กต์ Date ที่สร้างไว้ก่อนหน้า โชคดีที่เมธอด getTime () จะทำงานให้คุณได้มากที่สุด

      long time1 = getTime (date1); // ประกาศ primitive time1 ของ date1 long time2 = getTime (date2); // ประกาศเวลาดั้งเดิม 2 ของวันที่ 2

  3. ใช้สมการ "น้อยกว่า" ใช้สัญลักษณ์ "น้อยกว่า" () เพื่อเปรียบเทียบค่าจำนวนเต็มทั้งสองนี้ เนื่องจาก time1 น้อยกว่า time2 ควรพิมพ์ข้อความแรกบนหน้าจอ คำสั่ง else ถูกรวมไว้สำหรับไวยากรณ์ที่ถูกต้อง

      ถ้า (time1 time2) {System.out.println ("date1 เร็วกว่า date2"); // พิมพ์เพราะ time1 time2} else {System.out.println ("date1 ช้ากว่าหรือเท่ากับ date2"); }

  4. ทำการเปรียบเทียบ "มากกว่า" ใช้สัญลักษณ์ "มากกว่า" (>) เพื่อเปรียบเทียบจำนวนเต็มทั้งสองนี้ เนื่องจาก time1 มากกว่า time2 ข้อความแรกจะถูกพิมพ์บนหน้าจอ คำสั่ง else ถูกรวมไว้สำหรับไวยากรณ์ที่ถูกต้อง

      ถ้า (time2> time1) {System.out.println ("date2 มาหลัง date1"); // พิมพ์เพราะ time2> time1} else {System.out.println ("date2 เร็วกว่าหรือเท่ากับ date1"); }

  5. ทำการเปรียบเทียบแบบ "เท่ากับ" ใช้สัญลักษณ์ (==) เพื่อเปรียบเทียบจำนวนเต็มทั้งสองนี้ เนื่องจาก time1 เท่ากับ time3 ควรพิมพ์ข้อความแรก ถ้าโปรแกรมไปที่คำสั่ง else แสดงว่าเวลาไม่เท่ากัน

      ถ้า (time1 == time2) {System.out.println ("วันที่เท่ากัน"); } else {System.out.println ("วันที่ไม่เท่ากัน"); // พิมพ์เพราะ time1! = time2}