מציאת שנות קפיצה בג'אווה

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.


$config[zx-auto] not found$config[zx-overlay] not found