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