המרה בין LocalDate ל- XMLGregorianCalendar

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

במדריך מהיר זה נדון LocalDate ו XMLGregorianCalendar ולספק דוגמאות להמרה בין שני הסוגים.

2. XMLGregorianCalendar

תקן XML Schema מגדיר כללים ברורים לציון תאריכים בפורמט XML. על מנת להשתמש בפורמט זה, מחלקת Java XMLGregorianCalendar, שהוצג ב- Java 1.5, הוא ייצוג של סוגי הנתונים תאריך / שעה של W3C XML Schema 1.0.

3. LocalDate

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

4. מאת LocalDate ל XMLGregorianCalendar

ראשית נראה כיצד להמיר מ LocalDate ל XMLGregorianCalendar. על מנת ליצור מופע חדש של XMLGregorianCalendar, אנו משתמשים ב- DataTypeFactory מ ה javax.xml.datatype חֲבִילָה.

אז בואו ניצור מופע של LocalDate ולהמיר אותו ל- XMLGregorianCalendar:

LocalDate localDate = LocalDate.of (2019, 4, 25); XMLGregorianCalendar xmlGregorianCalendar = DatatypeFactory.newInstance (). NewXMLGregorianCalendar (localDate.toString ()); assertThat (xmlGregorianCalendar.getYear ()). isEqualTo (localDate.getYear ()); assertThat (xmlGregorianCalendar.getMonth ()). isEqualTo (localDate.getMonthValue ()); assertThat (xmlGregorianCalendar.getDay ()). isEqualTo (localDate.getDayOfMonth ()); assertThat (xmlGregorianCalendar.getTimezone ()). isEqualTo (DatatypeConstants.FIELD_UNDEFINED); 

כפי שצוין בעבר, XMLGregorianCalendar למשל יש אפשרות לקבל מידע על אזור הזמן. למרות זאת, LocalDate אין מידע על זמן.

לכן, כאשר אנו מבצעים את ההמרה, ערך אזור הזמן יישאר כמו FIELD_UNDEFINED.

5. מאת XMLGregorianCalendar ל LocalDate

כמו כן, כעת נראה כיצד לבצע את ההמרה להיפך. כפי שמתברר, המרה מא XMLGregorianCalendar ל LocalDate הוא הרבה יותר קל.

שוב, מאז LocalDate אין מידע על זמן, א LocalDate מופע יכול להכיל רק קבוצת משנה של ה- XMLGregorianCalendar מֵידָע.

בוא ניצור מופע של XMLGregorianCalendar ולבצע את ההמרה:

XMLGregorianCalendar xmlGregorianCalendar = DatatypeFactory.newInstance (). NewXMLGregorianCalendar ("2019-04-25"); LocalDate localDate = LocalDate.of (xmlGregorianCalendar.getYear (), xmlGregorianCalendar.getMonth (), xmlGregorianCalendar.getDay ()); assertThat (localDate.getYear ()). isEqualTo (xmlGregorianCalendar.getYear ()); assertThat (localDate.getMonthValue ()). isEqualTo (xmlGregorianCalendar.getMonth ()); assertThat (localDate.getDayOfMonth ()). isEqualTo (xmlGregorianCalendar.getDay ()); 

6. מסקנה

במדריך מהיר זה סקרנו את השינויים בין LocalDate מקרים ו XMLGregorianCalendar, ולהיפך.

וכמו תמיד, קוד הדוגמה זמין ב- GitHub.


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