מציאת שנות קפיצה בג'אווה
1. סקירה כללית
במדריך זה נדגים מספר דרכים לקבוע אם שנה נתונה היא שנה מעוברת בג'אווה.
שנה מעוברת היא שנה הניתנת לחלוקה של 4 ו -400 ללא שארית. לפיכך, שנים המתחלקות ב- 100 אך לא ב- 400 אינן מתאימות, למרות שהן ניתנות לחלוקה ב- 4.
2. שימוש בממשק ה- API של לוח שנה לפני Java-8
מאז Java 1.1, לוח השנה הגרגוריאני הכיתה מאפשרת לנו לבדוק אם שנה היא שנה מעוברת:
בוליאני ציבורי isLeapYear (שנה int);
כפי שניתן היה לצפות, שיטה זו חוזרת נָכוֹן אם השנה הנתונה היא שנה מעוברת ו שֶׁקֶר לשנים שאינן מעוברות.
שנים לפני הספירה (לפני המשיח) צריכות לעבור כערכים שליליים ומחושבים כ 1 - שָׁנָה. לדוגמא, שנת 3 לפני הספירה מיוצגת כ -2, שכן 1 - 3 = -2.
3. שימוש ב- Java 8+ תאריך / שעה API
ג'אווה 8 הציגה את ג'אווה.זְמַן חבילה עם ממשק API לתאריך ושעה טוב בהרבה.
הכיתה שָׁנָה בתוך ה ג'אווה.זְמַן לחבילה יש סטָטִי שיטה לבדוק אם השנה הנתונה היא שנה מעוברת:
בוליאני סטטי ציבורי isLeap (שנה ארוכה);
ויש לה גם שיטת מופע לעשות את אותו הדבר:
isLeap () בוליאני ציבורי;
4. באמצעות ה- API של Joda-Time
ממשק ה- API של Joda-Time הוא אחת מספריות הצד השלישי הנפוצות ביותר מבין פרויקטי Java עבור כלי עזר ושעות. מאז Java 8, הספרייה הזו במצב בר תחזוקה כאמור במאגר המקורות Joda-Time GitHub.
אין שיטת API מוגדרת מראש למציאת שנה מעוברת ב- Joda-Time. עם זאת, אנו יכולים להשתמש בהם LocalDate ו ימים שיעורים לבדיקה לשנה מעוברת:
LocalDate localDate = LocalDate חדש (2020, 1, 31); int numberOfDays = Days.daysBetween (localDate, localDate.plusYears (1)). getDays (); isLeapYear בוליאני = (numberOfDays> 365)? אמת שקר;
5. מסקנה
במדריך זה ראינו מה היא שנה מעוברת, ההיגיון למציאתה וכמה ממשקי API של Java שבהם נוכל לבדוק.
כמו תמיד, ניתן למצוא קטעי קוד ב- GitHub.