ישנן דרכים רבות להשוות שני תאריכים בשפת התכנות של Java. במחשבים תאריך מיוצג על ידי מספר (סוג הנתונים Long) ביחידות זמן - כלומר מספר האלפיות השנייה שחלפו מאז 1 בינואר 1970. ב- Java, Date הוא אובייקט, כלומר יש לו מספר שיטות לביצוע השוואות. כל שיטה המשמשת להשוואת שני תאריכים היא בעצם השוואת יחידות הזמן של שני התאריכים.
שלב
שיטה 1 מתוך 4: שימוש ב- comparTo
שלב 1. השתמש ב- comparTo
אובייקט התאריך מיישם השוואה כך שניתן להשוות 2 תאריכים זה לזה ישירות בשיטת comparTo. אם לשני התאריכים יש אותו מספר ביחידות זמן, אז השיטה מחזירה אפס. אם התאריך השני קטן מהראשון, ערך פחות מאפס מוחזר. אם התאריך השני גדול מהראשון, השיטה מחזירה ערך גדול מאפס. אם שני התאריכים זהים, השיטה תחזיר ערך null.
שלב 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
שלב 3. השווה את אובייקטים תאריך
הקוד הבא יראה לך דוגמאות לכל מקרה - פחות, שווה וגדול מ.
date1.compareTo (date2); // date1 <date2, מחזיר ערך פחות מ- 0 date2.compareTo (date1); // date2> date1, מחזיר ערך גדול מ- 0 date1.compareTo (date3); // date1 = date3, כך שהוא יפיק 0 במסוף
שיטה 2 מתוך 4: שימוש בשווים, אחרי ולפני
שלב 1. השתמש בשווים, אחרי ולפני
ניתן להשוות תאריכים באמצעות שיטות שוות, אחרי ולפני. אם לשני תאריכים יש אותו ערך בזמן, השיטה שווה שווה מחזירה נכון. הדוגמה הבאה תשתמש באובייקט Date שנוצר בשיטת exampleTo לדוגמה.
שלב 2. השווה את השיטה שלפני
הקוד הבא מציג מקרה לדוגמה המחזיר נכון ושקר. אם תאריך 1 הוא תאריך לפני תאריך 2, השיטה שלפני מחזירה true. אחרת, השיטה שלפני מחזירה שקר.
System.out.print (date1.before (date2)); // להציג את הערך '' true '' System.out.print (date2.before (date2)); // החזר את הערך 'שקר'
שלב 3. השווה באמצעות שיטת ה- after
הקוד הבא מציג מקרה לדוגמה המחזיר נכון ושקר. אם תאריך 2 הוא התאריך שאחרי התאריך 1, שיטת ה- after מחזירה true. אחרת, השיטה שאחרי תחזיר שקר.
System.out.print (date2.after (date1)); // להציג את הערך '' true '' System.out.print (date1.after (date2)); // להציג את הערך '' false ''
שלב 4. השווה לשיטה שווה
הקוד הבא מציג מקרה לדוגמה המחזיר נכון ושקר. אם שני התאריכים שווים, השיטה שווה שווה מחזירה נכון. אחרת, השיטה שווה שווה מחזירה שקר.
System.out.print (date1.equals (date3)); // להציג את הערך '' true '' System.out.print (date1.equals (date2)); // להציג את הערך '' false ''
שיטה 3 מתוך 4: שימוש ביומן הכיתה
שלב 1. השתמש ביומן הכיתה
למחלקה לוח שנה יש גם שיטות השוואה, שוות, אחרי ולפני שעובדות זהות לאלה שתוארו קודם לכן עבור מחלקת התאריכים. כך שאם פרטי התאריך מאוחסנים ביומן הכיתה, אינך צריך לחלץ את התאריך רק לשם השוואה.
שלב 2. צור מופע של לוח שנה
כדי להשתמש בשיטות ביומן הכיתה, עליך ליצור מספר מופעי לוח שנה. למרבה המזל, תוכל להשתמש בערכים ממופע תאריך שנוצר בעבר.
לוח שנה cal1 = Calendar.getInstance (); // הצהרת cal1 לוח שנה cal2 = Calendar.getInstance (); // הצהרת cal2 לוח שנה cal3 = Calendar.getInstance (); // הצהירו על cal3 cal1.setTime (date1); // הכנס את התאריך ל- cal1 cal2.setTime (date2); cal3.setTime (date3);
שלב 3. השווה את cal1 ו- cal2 בשיטת הקודם
הקוד הבא יפיק את הערך של 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)); // החזר את הערך '' true '': cal1 == cal3 System.out.print (cal1.equals (cal2)); // החזר את הערך 'שקר': cal1! = cal2
שיטה 4 מתוך 4: שימוש ב- getTime
שלב 1. השתמש ב- getTime
תוכל גם להשוות ישירות את ערכי יחידת הזמן של שני תאריכים, למרות ששתי השיטות הקודמות עשויות להיות קלות יותר לקריאה ועדיפות. כך תשווה בין שני סוגי נתונים פרימיטיביים, כך שתוכל להשתמש באופראנדים "" ו" == ".
שלב 2. צור אובייקט זמן בפורמט מספר ארוך
לפני שתוכל להשוות תאריכים, עליך ליצור ערך שלם שלם מתוך אובייקט התאריך שנוצר בעבר. למרבה המזל, שיטת getTime () תעשה זאת עבורך.
long time1 = getTime (date1); // הצהירו על זמן פרימיטיבי 1 של תאריך 1 זמן רב 2 = getTime (תאריך 2); // להכריז על ערך time2 פרימיטיבי של תאריך 2
שלב 3. בצע פחות מהשוואה
השתמש באופראנד פחות מ (<) כדי להשוות בין שני הערכים השלמים הללו. מכיוון שזמן 1 הוא פחות מזמן 2, ההודעה הראשונה תופיע. המשפט else כלול להשלמת התחביר.
if (time1 <time2) {System.out.println ("תאריך 1 הוא התאריך לפני תאריך 2"); // יופיע כי זמן 1 <זמן 2} אחר {System.out.println ("תאריך 1 אינו תאריך לפני תאריך 2"); }
שלב 4. בצע השוואה גדולה יותר
השתמש באופראנד גדול מ (>) כדי להשוות בין שני ערכי המספר השלמים הללו. מכיוון שזמן 1 גדול מזמן 2, ההודעה הראשונה תופיע. המשפט else כלול להשלמת התחביר.
if (time2> time1) {System.out.println ("תאריך 2 הוא התאריך שאחרי התאריך 1"); // יופיע כי זמן 2> זמן 1} אחר {System.out.println ("תאריך 2 אינו התאריך שאחרי התאריך 1"); }
שלב 5. בצע השוואה שווה
השתמש בפונקציית האופראנד כדי לבדוק את שוויון הערכים (==) להשוואת שני המספרים השלמים הללו. מכיוון שזמן 1 שווה לזמן 3, ההודעה הראשונה תופיע. אם זרימת התוכנית נכנסת למשפט האחרים, המשמעות היא שלשתי הפעמים אין אותו ערך.
if (time1 == time2) {System.out.println ("שני התאריכים זהים"); } else {System.out.println ("הראשון אינו זהה לשני"); // יופיע כי זמן 1! = זמן 2}