השווה תאריכים ב- Java

מְחַבֵּר: Roger Morrison
תאריך הבריאה: 24 סֶפּטֶמבֶּר 2021
תאריך עדכון: 1 יולי 2024
Anonim
How to Compare two Dates in Java using compareTo() method
וִידֵאוֹ: How to Compare two Dates in Java using compareTo() method

תוֹכֶן

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

לדרוך

שיטה 1 מתוך 4: שימוש בפקודה "CompareTo"

  1. השתמש ב- CompareTo. התאריך מיישם את ComparableDate> וכך ניתן להשוות שני תאריכים זה לזה באופן ישיר בשיטת comparTo. אם התאריכים מציינים את אותו רגע בזמן, השיטה תחזיר אפס. אם התאריך שהושווה הוא לפני טיעון התאריך, אז יוחזר ערך שלילי. אם התאריך המושווה הוא תאריך מאוחר מזה של טיעון התאריך, אז יוחזר ערך חיובי. אם התאריכים זהים, יוחזר אפס.
  2. צור את אובייקטים התאריך. יהיה עליך ליצור כל אובייקט תאריך לפני שתוכל להתחיל להשוות ביניהם. אחת הדרכים לעשות זאת היא להחיל את מחלקת SimpleDateFormat. זה מאפשר לך להזין תאריכים בקלות לאובייקטים של תאריך.

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

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

      date1.compareTo (date2); // date1 date2, פחות מ- 0 date2.compareTo (date1); // date2> date1, מחזירה יותר מ- 0 date1.compareTo (date3); // תאריך 1 = תאריך 3, מחזיר 0

שיטה 2 מתוך 4: שימוש בשיטות "שווה אחרי ואחרי"

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

      System.out.print (date1.before (date2)); // הדפס System.out.print אמיתי (תאריך 2. לפני (תאריך 2)); // הדפס שקר

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

      System.out.print (date2.after (date1)); // הדפס אמת System.out.print (date1.after (date2)); // הדפס שקר

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

      System.out.print (date1.equals (date3)); // הדפס אמת System.out.print (date1.equals (date2)); // הדפס שקר

שיטה 3 מתוך 4: שימוש בשיעור לוח השנה

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

      לוח שנה cal1 = Calendar.getInstance (); // מצהיר cal1 לוח שנה cal2 = Calendar.getInstance (); // מצהיר cal2 לוח שנה cal3 = Calendar.getInstance (); // מצהיר cal3 cal1.setTime (תאריך 1); // חל תאריך על cal1 cal2.setTime (תאריך 2); cal3.setTime (תאריך 3);

  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 () תעשה את רוב העבודה בשבילך.

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

  3. השתמש במשוואה "פחות מ-". השתמש בסמל "פחות מ" () כדי להשוות בין שני הערכים השלמים האלה. מכיוון ש- time1 הוא פחות מ- time2, יש להדפיס את ההודעה הראשונה על המסך. הצהרה אחרת כלולה עבור התחביר הנכון.

      אם (time1 time2) {System.out.println ("תאריך 1 קודם לתאריך 2"); // הדפס כי זמן1 זמן2} אחר {System.out.println ("תאריך 1 מאוחר או שווה לתאריך 2"); }

  4. ערוך השוואה "גדולה מ-". השתמש בסמל "גדול מ-" (>) כדי להשוות בין שני המספרים השלמים הללו. מכיוון ש- time1 גדול מ- time2, ההודעה הראשונה מודפסת על המסך. הצהרה אחרת כלולה לתחביר נכון.

      אם (time2> time1) {System.out.println ("תאריך 2 בא אחרי תאריך 1"); // הדפס כי זמן 2> זמן 1} אחר {System.out.println ("תאריך 2 מוקדם או שווה לתאריך 1"); }

  5. ערכו השוואה "שווה ל". השתמש בסמל (==) כדי להשוות בין שני המספרים השלמים הללו. מכיוון ש time1 שווה לזמן 3, יש להדפיס את ההודעה הראשונה. אם התוכנית מגיעה להצהרה אחרת, המשמעות היא שהזמנים אינם זהים.

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