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

สารบัญ:

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

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

วีดีโอ: 4 วิธีในการเปรียบเทียบสองวันที่ใน Java
วีดีโอ: เริ่มเขียนโปรแกรมด้วย Java ฉบับไว ๆ เข้าใจที่สุดในโลก 2024, พฤศจิกายน
Anonim

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

ขั้นตอน

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

4301351 1
4301351 1

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

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

4301351 2
4301351 2

ขั้นตอนที่ 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
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. ใช้เท่ากับ หลัง และ ก่อน

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

4301351 5
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
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
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
4301351 8

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

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

4301351 9
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
4301351 10

ขั้นตอนที่ 3 เปรียบเทียบ cal1 และ cal2 โดยใช้วิธี before

รหัสต่อไปนี้จะส่งออกค่าของtr

    System.out.print(cal1.before(cal2)); //จะส่งกลับค่า''จริง''

4301351 11
4301351 11

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

รหัสต่อไปนี้จะคืนค่าเท็จเนื่องจาก cal1 เป็นวันที่ก่อน cal2

    System.out.print(cal1.after(cal2)); // คืนค่า '' เท็จ ''

4301351 12
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
4301351 13

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

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

4301351 14
4301351 14

ขั้นตอนที่ 2 สร้างวัตถุเวลาในรูปแบบตัวเลขยาว

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

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

4301351 15
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
4301351 16

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

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

    if(time2 > time1){ System.out.println("date2 คือวันที่หลัง date1"); //จะแสดงเพราะ time2 > time1 } else { System.out.println("date2 ไม่ใช่วันที่หลัง date1"); }

4301351 17
4301351 17

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

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

    if(time1 == time2){ System.out.println("วันที่ทั้งสองเหมือนกัน"); } else{ System.out.println("อันที่ 1 ไม่เหมือนกับอันที่ 2"); //จะแสดงเพราะ time1 != time2 }

แนะนำ: