תאריך תוספת בג'אווה

1. סקירה כללית

במדריך זה נבחן דרכים להגדלת תאריך ביום אחד באמצעות Java. לפני Java 8, ספריות התאריך והשעה הסטנדרטיות של Java לא היו ידידותיות במיוחד. לפיכך, Joda-Time הפכה לספריית התאריכים והשעה הסטנדרטית בפועל עבור Java לפני Java 8.

יש גם שיעורים וספריות אחרים שיכולים לשמש לביצוע המשימה, כמו java.util.Calendar ו- Apache Commons.

Java 8 כלל ממשק API לתאריך ולזמן טוב יותר בכדי לטפל במגרעות הספריות הישנות שלו.

לכן אנו מסתכלים על כיצד להגדיל תאריך ביום אחד באמצעות Java 8, API של Joda-Time, Java לוּחַ שָׁנָה מחלקה וספריית אפאצ'י קומונס.

2. תלות Maven

יש לכלול את התלות הבאות ב- pom.xml קוֹבֶץ:

  joda-time joda-time 2.10 org.apache.commons commons-lang3 3.5 

תוכל למצוא את הגרסה האחרונה של ה- Joda-Time ב- Maven Central, וגם את הגרסה האחרונה של Apache Commons Lang.

3. שימוש java.time

ה java.time.LocalDate הכיתה היא ייצוג תאריך-זמן שאינו משתנה, לעיתים קרובות נתפס כשנה-חודש-יום.

LocalDate יש שיטות רבות למניפולציה בתאריכים, בואו נראה כיצד נוכל להשתמש בה כדי לבצע את אותה משימה:

מחרוזת סטטית ציבורית addOneDay (תאריך מחרוזת) {החזרה LocalDate .parse (תאריך) .plusDays (1) .toString (); }

בדוגמה זו אנו משתמשים java.time.LocalDate הכיתה שלה plusDays () שיטה להגדיל את התאריך ביום אחד.

כעת, בואו נוודא ששיטה זו עובדת כצפוי:

@Test הציבור בטל givenDate_whenUsingJava8_thenAddOneDay () זורק חריג {String incrementedDate = addOneDay ("03/07/2018"); assertEquals ("04/07/2018", incrementedDate); }

4. שימוש java.util.Calendar

גישה אחרת היא שימוש java.util.Calendar וזה שלה לְהוֹסִיף() שיטה להגדלת התאריך.

נשתמש בזה יחד עם java.text.SimpleDateFormat למטרות עיצוב תאריכים:

מחרוזת סטטית ציבורית addOneDayCalendar (תאריך מחרוזת) זורק ParseException {SimpleDateFormat sdf = חדש SimpleDateFormat ("yyyy-MM-dd"); לוח שנה c = Calendar.getInstance (); c.setTime (sdf.parse (תאריך)); c.add (Calendar.DATE, 1); החזר sdf.format (c.getTime ()); }

java.text.SimpleDateFormat קיים כדי להבטיח שימוש בתבנית התאריך הצפויה. התאריך מוגדל באמצעות לְהוֹסִיף() שיטה.

שוב, בואו נוודא שגישה זו פועלת כמתוכנן:

@Test הציבור בטל givenDate_whenUsingCalendar_thenAddOneDay () זורק חריג {String incrementedDate = addOneDayCalendar ("03/07/2018"); assertEquals ("04/07/2018", incrementedDate); }

5. שימוש בג'ודה-טיים

ה org.joda.time.DateTime בכיתה יש שיטות רבות המסייעות להתמודד כראוי עם תאריך ושעה.

בואו נראה כיצד נוכל להשתמש בו להגדלת התאריך ביום אחד:

מחרוזת סטטית ציבורית addOneDayJodaTime (תאריך מחרוזת) {DateTime dateTime = DateTime חדש (תאריך); תאריך החזרה Time .plusDays (1) .toString ("yyyy-MM-dd"); }

הנה, אנו משתמשים org.joda.time.DateTime הכיתה שלה plusDays () שיטה להגדיל את התאריך ביום אחד.

אנו יכולים לוודא שהקוד לעיל עובד עם בדיקת היחידה הבאה:

@Test הציבור בטל givenDate_whenUsingJodaTime_thenAddOneDay () זורק חריג {String incrementedDate = addOneDayJodaTime ("03/07/2018"); assertEquals ("04/07/2018", incrementedDate); }

6. שימוש אפאצ'י קומונס

ספרייה נוספת הנפוצה למניפולציה בתאריכים (בין היתר) היא אפאצ'י קומונס. זו חבילת כלי עזר סביב השימוש ב- java.util.Calendar ו java.util.Date חפצים.

למשימה שלנו, אנו יכולים להשתמש ב- org.apache.commons.lang3.time.DateUtils הכיתה שלה addDays () שיטה (שים לב לכך SimpleDateFormat משמש שוב לעיצוב תאריכים):

מחרוזת סטטית ציבורית addOneDayApacheCommons (תאריך מחרוזת) זורק ParseException {SimpleDateFormat sdf = SimpleDateFormat חדש ("yyyy-MM-dd"); תאריך incrementedDate = DateUtils .addDays (sdf.parse (תאריך), 1); החזר sdf.format (incrementedDate); }

כרגיל, נוודא את התוצאות באמצעות בדיקת יחידה:

@Test הציבור בטל givenDate_whenUsingApacheCommons_thenAddOneDay () זורק חריג {String incrementedDate = addOneDayApacheCommons ("03/07/2018"); assertEquals ("04/07/2018", incrementedDate); }

7. מסקנה

במאמר מהיר זה בחנו גישות שונות להתמודדות עם משימה פשוטה של ​​הגדלת תאריך ביום אחד. הראינו כיצד ניתן להשיג זאת באמצעות ממשקי ה- API העיקריים של Java וכן בכמה ספריות פופולריות של צד שלישי.

ניתן למצוא את דגימות הקוד המשמשות במאמר זה ב- GitHub.


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