4 דרכים להשוות שני תאריכים בג'אווה

תוכן עניינים:

4 דרכים להשוות שני תאריכים בג'אווה
4 דרכים להשוות שני תאריכים בג'אווה

וִידֵאוֹ: 4 דרכים להשוות שני תאריכים בג'אווה

וִידֵאוֹ: 4 דרכים להשוות שני תאריכים בג'אווה
וִידֵאוֹ: מדריך java - שיעור 1 - מבוא 2024, מאי
Anonim

ישנן דרכים רבות להשוות שני תאריכים בשפת התכנות של Java. במחשבים תאריך מיוצג על ידי מספר (סוג הנתונים Long) ביחידות זמן - כלומר מספר האלפיות השנייה שחלפו מאז 1 בינואר 1970. ב- Java, Date הוא אובייקט, כלומר יש לו מספר שיטות לביצוע השוואות. כל שיטה המשמשת להשוואת שני תאריכים היא בעצם השוואת יחידות הזמן של שני התאריכים.

שלב

שיטה 1 מתוך 4: שימוש ב- comparTo

4301351 1
4301351 1

שלב 1. השתמש ב- comparTo

אובייקט התאריך מיישם השוואה כך שניתן להשוות 2 תאריכים זה לזה ישירות בשיטת comparTo. אם לשני התאריכים יש אותו מספר ביחידות זמן, אז השיטה מחזירה אפס. אם התאריך השני קטן מהראשון, ערך פחות מאפס מוחזר. אם התאריך השני גדול מהראשון, השיטה מחזירה ערך גדול מאפס. אם שני התאריכים זהים, השיטה תחזיר ערך null.

4301351 2
4301351 2

שלב 2. צור מספר אובייקטים של תאריך

עליך ליצור מספר אובייקטים של תאריך לפני שתשווה אותם. אחת הדרכים הקלות ביותר לעשות זאת היא להשתמש בכיתה SimpleDateFormat. מחלקה זו מקלה על המרת ערך תאריך קלט לאובייקט תאריך.

    SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd"). כדי להכריז על ערך ב''תאריך אובייקט '' חדש, השתמש באותו פורמט תאריך בעת יצירת התאריך. תאריך תאריך 1 = sdf.parse ("1995-02-23"); // תאריך 1 הוא 23 בפברואר 1995 תאריך תאריך 2 = sdf.parse ("2001-10-31"); // תאריך 2 הוא 31 באוקטובר 2001 תאריך תאריך 3 = sdf.parse ("1995-02-23"); // תאריך 3 הוא 23 בפברואר 1995

4301351 3
4301351 3

שלב 3. השווה את אובייקטים תאריך

הקוד הבא יראה לך דוגמאות לכל מקרה - פחות, שווה וגדול מ.

    date1.compareTo (date2); // date1 <date2, מחזיר ערך פחות מ- 0 date2.compareTo (date1); // date2> date1, מחזיר ערך גדול מ- 0 date1.compareTo (date3); // date1 = date3, כך שהוא יפיק 0 במסוף

שיטה 2 מתוך 4: שימוש בשווים, אחרי ולפני

4301351 4
4301351 4

שלב 1. השתמש בשווים, אחרי ולפני

ניתן להשוות תאריכים באמצעות שיטות שוות, אחרי ולפני. אם לשני תאריכים יש אותו ערך בזמן, השיטה שווה שווה מחזירה נכון. הדוגמה הבאה תשתמש באובייקט Date שנוצר בשיטת exampleTo לדוגמה.

4301351 5
4301351 5

שלב 2. השווה את השיטה שלפני

הקוד הבא מציג מקרה לדוגמה המחזיר נכון ושקר. אם תאריך 1 הוא תאריך לפני תאריך 2, השיטה שלפני מחזירה true. אחרת, השיטה שלפני מחזירה שקר.

    System.out.print (date1.before (date2)); // להציג את הערך '' true '' System.out.print (date2.before (date2)); // החזר את הערך 'שקר'

4301351 6
4301351 6

שלב 3. השווה באמצעות שיטת ה- after

הקוד הבא מציג מקרה לדוגמה המחזיר נכון ושקר. אם תאריך 2 הוא התאריך שאחרי התאריך 1, שיטת ה- after מחזירה true. אחרת, השיטה שאחרי תחזיר שקר.

    System.out.print (date2.after (date1)); // להציג את הערך '' true '' System.out.print (date1.after (date2)); // להציג את הערך '' false ''

4301351 7
4301351 7

שלב 4. השווה לשיטה שווה

הקוד הבא מציג מקרה לדוגמה המחזיר נכון ושקר. אם שני התאריכים שווים, השיטה שווה שווה מחזירה נכון. אחרת, השיטה שווה שווה מחזירה שקר.

    System.out.print (date1.equals (date3)); // להציג את הערך '' true '' System.out.print (date1.equals (date2)); // להציג את הערך '' false ''

שיטה 3 מתוך 4: שימוש ביומן הכיתה

4301351 8
4301351 8

שלב 1. השתמש ביומן הכיתה

למחלקה לוח שנה יש גם שיטות השוואה, שוות, אחרי ולפני שעובדות זהות לאלה שתוארו קודם לכן עבור מחלקת התאריכים. כך שאם פרטי התאריך מאוחסנים ביומן הכיתה, אינך צריך לחלץ את התאריך רק לשם השוואה.

4301351 9
4301351 9

שלב 2. צור מופע של לוח שנה

כדי להשתמש בשיטות ביומן הכיתה, עליך ליצור מספר מופעי לוח שנה. למרבה המזל, תוכל להשתמש בערכים ממופע תאריך שנוצר בעבר.

    לוח שנה cal1 = Calendar.getInstance (); // הצהרת cal1 לוח שנה cal2 = Calendar.getInstance (); // הצהרת cal2 לוח שנה cal3 = Calendar.getInstance (); // הצהירו על cal3 cal1.setTime (date1); // הכנס את התאריך ל- cal1 cal2.setTime (date2); cal3.setTime (date3);

4301351 10
4301351 10

שלב 3. השווה את cal1 ו- cal2 בשיטת הקודם

הקוד הבא יפיק את הערך של 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)); // החזר את הערך '' true '': cal1 == cal3 System.out.print (cal1.equals (cal2)); // החזר את הערך 'שקר': cal1! = cal2

שיטה 4 מתוך 4: שימוש ב- getTime

4301351 13
4301351 13

שלב 1. השתמש ב- getTime

תוכל גם להשוות ישירות את ערכי יחידת הזמן של שני תאריכים, למרות ששתי השיטות הקודמות עשויות להיות קלות יותר לקריאה ועדיפות. כך תשווה בין שני סוגי נתונים פרימיטיביים, כך שתוכל להשתמש באופראנדים "" ו" == ".

4301351 14
4301351 14

שלב 2. צור אובייקט זמן בפורמט מספר ארוך

לפני שתוכל להשוות תאריכים, עליך ליצור ערך שלם שלם מתוך אובייקט התאריך שנוצר בעבר. למרבה המזל, שיטת getTime () תעשה זאת עבורך.

    long time1 = getTime (date1); // הצהירו על זמן פרימיטיבי 1 של תאריך 1 זמן רב 2 = getTime (תאריך 2); // להכריז על ערך time2 פרימיטיבי של תאריך 2

4301351 15
4301351 15

שלב 3. בצע פחות מהשוואה

השתמש באופראנד פחות מ (<) כדי להשוות בין שני הערכים השלמים הללו. מכיוון שזמן 1 הוא פחות מזמן 2, ההודעה הראשונה תופיע. המשפט else כלול להשלמת התחביר.

    if (time1 <time2) {System.out.println ("תאריך 1 הוא התאריך לפני תאריך 2"); // יופיע כי זמן 1 <זמן 2} אחר {System.out.println ("תאריך 1 אינו תאריך לפני תאריך 2"); }

4301351 16
4301351 16

שלב 4. בצע השוואה גדולה יותר

השתמש באופראנד גדול מ (>) כדי להשוות בין שני ערכי המספר השלמים הללו. מכיוון שזמן 1 גדול מזמן 2, ההודעה הראשונה תופיע. המשפט else כלול להשלמת התחביר.

    if (time2> time1) {System.out.println ("תאריך 2 הוא התאריך שאחרי התאריך 1"); // יופיע כי זמן 2> זמן 1} אחר {System.out.println ("תאריך 2 אינו התאריך שאחרי התאריך 1"); }

4301351 17
4301351 17

שלב 5. בצע השוואה שווה

השתמש בפונקציית האופראנד כדי לבדוק את שוויון הערכים (==) להשוואת שני המספרים השלמים הללו. מכיוון שזמן 1 שווה לזמן 3, ההודעה הראשונה תופיע. אם זרימת התוכנית נכנסת למשפט האחרים, המשמעות היא שלשתי הפעמים אין אותו ערך.

    if (time1 == time2) {System.out.println ("שני התאריכים זהים"); } else {System.out.println ("הראשון אינו זהה לשני"); // יופיע כי זמן 1! = זמן 2}

מוּמלָץ: