4 วิธีในการเปรียบเทียบสองวันที่ใน Java

สารบัญ:

4 วิธีในการเปรียบเทียบสองวันที่ใน Java
4 วิธีในการเปรียบเทียบสองวันที่ใน Java

วีดีโอ: 4 วิธีในการเปรียบเทียบสองวันที่ใน Java

วีดีโอ: 4 วิธีในการเปรียบเทียบสองวันที่ใน Java
วีดีโอ: EP 10 การใช้งานโปรแกรม Inkscape เบื้องต้น เพื่อแปลงไฟล์รูปภาพเป็นเส้นเวกเตอร์ 2024, เมษายน
Anonim

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

ขั้นตอน

วิธีที่ 1 จาก 4: การใช้ CompareTo

4301351 1
4301351 1

ขั้นตอนที่ 1 ใช้ CompareTo

วันที่ดำเนินการ เปรียบเทียบได้ ดังนั้นวันที่สองวันสามารถเปรียบเทียบโดยตรงกับเมธอด CompareTo ถ้าวันที่เป็นช่วงเวลาเดียวกัน เมธอดจะคืนค่าศูนย์ ถ้าวันที่ที่ถูกเปรียบเทียบอยู่ก่อนอาร์กิวเมนต์ date ค่าที่น้อยกว่าศูนย์จะถูกส่งกลับ ถ้าวันที่ที่ถูกเปรียบเทียบอยู่หลังอาร์กิวเมนต์ date ค่าที่มากกว่าศูนย์จะถูกส่งกลับ ถ้าวันที่เท่ากัน ค่า 0 จะถูกส่งกลับ

4301351 2
4301351 2

ขั้นตอนที่ 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

4301351 3
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
4301351 4

ขั้นตอนที่ 1 ใช้เท่ากับ หลัง และ ก่อน

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

4301351 5
4301351 5

ขั้นตอนที่ 2. เปรียบเทียบโดยใช้วิธี before

รหัสด้านล่างแสดงกรณีจริงและเท็จ ถ้า date1 อยู่ก่อน date2 ก่อนจะส่งกลับ true ถ้าไม่ใช่ ก่อนส่งคืนค่าเท็จ

    System.out.print(วันที่1.ก่อน(วันที่2)); //พิมพ์จริง System.out.print(date2.before(date2)); //พิมพ์เท็จ

4301351 6
4301351 6

ขั้นตอนที่ 3 เปรียบเทียบโดยใช้วิธีหลัง

รหัสด้านล่างแสดงกรณีจริงและเท็จ ถ้า date2 อยู่หลัง date1 หลังจากคืนค่า true ถ้าไม่ใช่ หลังจากส่งกลับค่าเท็จ

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

4301351 7
4301351 7

ขั้นตอนที่ 4 เปรียบเทียบโดยใช้วิธีเท่ากับ

รหัสด้านล่างแสดงกรณีจริงและเท็จ ถ้าวันที่เท่ากัน เท่ากับ คืนค่า true ถ้าไม่ใช่ เท่ากับ คืนค่าเท็จ

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

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

4301351 8
4301351 8

ขั้นตอนที่ 1. ใช้ปฏิทิน

คลาสปฏิทินยังมีวิธี CompareTo, เท่ากับ, หลังและก่อนที่ทำงานในลักษณะเดียวกับที่อธิบายไว้ข้างต้นสำหรับคลาสวันที่ ดังนั้น หากข้อมูลวันที่ถูกเก็บไว้ในปฏิทิน ไม่จำเป็นต้องแยกวันที่เพื่อทำการเปรียบเทียบ

4301351 9
4301351 9

ขั้นตอนที่ 2 สร้างอินสแตนซ์ของปฏิทิน

หากต้องการใช้วิธีปฏิทิน คุณจะต้องมีอินสแตนซ์ของปฏิทินสองสามตัว โชคดีที่คุณสามารถคว้าเวลาจากอินสแตนซ์ 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
4301351 10

ขั้นตอนที่ 3 เปรียบเทียบ cal1 กับ cal2 ก่อนใช้

รหัสด้านล่างควรพิมพ์จริงเนื่องจาก cal1 มาก่อน cal2

    System.out.print(cal1.before(cal2)); //จะพิมพ์ true

4301351 11
4301351 11

ขั้นตอนที่ 4 เปรียบเทียบ cal1 และ cal2 โดยใช้ after

รหัสด้านล่างควรพิมพ์เท็จเนื่องจาก cal1 มาก่อน cal2

    System.out.print(cal1.after(cal2)); //พิมพ์เท็จ

4301351 12
4301351 12

ขั้นตอนที่ 5. เปรียบเทียบ cal1 และ cal2 โดยใช้เท่ากับ

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

    System.out.println(cal1.equals(cal3)); // พิมพ์จริง: cal1 == cal3 System.out.print(cal1.equals(cal2)); // พิมพ์เท็จ: cal1 != cal2

วิธีที่ 4 จาก 4: การใช้ getTime

4301351 13
4301351 13

ขั้นตอนที่ 1 ใช้ getTime

นอกจากนี้ยังสามารถเปรียบเทียบจุดเวลาของวันที่สองวันได้โดยตรง แม้ว่าวิธีการใดๆ ก่อนหน้านี้มีแนวโน้มที่จะอ่านง่ายกว่าและดีกว่า นี่จะเป็นการเปรียบเทียบข้อมูลพื้นฐานสองประเภท ดังนั้นจึงสามารถทำได้ด้วย "" และ "=="

4301351 14
4301351 14

ขั้นตอนที่ 2 สร้างวัตถุที่ใช้เวลานาน

ก่อนที่คุณจะเปรียบเทียบวันที่ คุณต้องสร้างจำนวนเต็มแบบยาวด้วยข้อมูลจากออบเจ็กต์ Date ที่สร้างไว้ก่อนหน้านี้ โชคดีที่เมธอด getTime() จะช่วยคุณได้มากที่สุด

    เวลานาน 1 = getTime (วันที่ 1); //ประกาศ primitive time1 จาก date1 long time2 = getTime(date2); //ประกาศ primitive time2 จาก date2

4301351 15
4301351 15

ขั้นตอนที่ 3 ทำน้อยกว่าการเปรียบเทียบ

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

    if(time1 <time2){ System.out.println("date1 ก่อน date2"); //จะพิมพ์ตั้งแต่ time1 <time2 } else { System.out.println("date1 is not before date2"); }

4301351 16
4301351 16

ขั้นตอนที่ 4 ทำมากกว่าการเปรียบเทียบ

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

    if(time2 > time1){ System.out.println("date2 อยู่หลัง date1"); //จะพิมพ์ตั้งแต่ time2 > time1 } else { System.out.println("date2 is not after date1"); }

4301351 17
4301351 17

ขั้นตอนที่ 5. ทำการเปรียบเทียบเท่ากับ

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

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

แนะนำ: