Konvertering mellom LocalDate og XMLGregorianCalendar

1. Oversikt

I denne raske opplæringen vil vi diskutere LocalDate og XMLGregorianCalendar og gi eksempler på konvertering mellom de to typene.

2. XMLGregorianCalendar

XML Schema-standarden definerer klare regler for å spesifisere datoer i XML-format. For å bruke dette formatet, Java-klassen XMLGregorianCalendar, introdusert i Java 1.5, er en representasjon av datatypene W3C XML Schema 1.0.

3. LocalDate

EN LocalDate forekomst representerer en dato uten tidssone i ISO-8601-kalendersystemet. Som et resultat, LocalDate er for eksempel egnet for lagring av bursdager, men ikke noe relatert til tid. Java introdusert LocalDate i versjon 1.8.

4. Fra LocalDate til XMLGregorianCalendar

Først får vi se hvordan vi konverterer fra LocalDate til XMLGregorianCalendar. For å generere en ny forekomst av XMLGregorianCalendar, bruker vi en DataTypeFactory fra javax.xml.datatype pakke.

Så la oss lage en forekomst av LocalDate og konvertere den til 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); 

Som tidligere nevnt, an XMLGregorianCalendar forekomst har muligheten for å ha tidssoneinformasjon. Derimot, LocalDate har ikke noen informasjon om tid.

Derfor, når vi utfører konverteringen, tidssoneverdien vil forbli som FIELD_UNDEFINED.

5. Fra XMLGregorianCalendar til LocalDate

På samme måte vil vi nå se hvordan vi kan utføre konverteringen omvendt. Som det viser seg, konvertering fra en XMLGregorianCalendar til LocalDate er mye lettere.

Igjen, siden LocalDate har ikke informasjon om tid, a LocalDate forekomst kan bare inneholde et delsett av XMLGregorianCalendar informasjon.

La oss lage en forekomst av XMLGregorianCalendar og utføre konverteringen:

XMLGregorianCalendar xmlGregorianCalendar = DatatypeFactory.newInstance (). NewXMLGregorianCalendar ("25.04.2019"); LocalDate localDate = LocalDate.of (xmlGregorianCalendar.getYear (), xmlGregorianCalendar.getMonth (), xmlGregorianCalendar.getDay ()); assertThat (localDate.getYear ()). erEqualTo (xmlGregorianCalendar.getYear ()); assertThat (localDate.getMonthValue ()). er EqualTo (xmlGregorianCalendar.getMonth ()); assertThat (localDate.getDayOfMonth ()). er EqualTo (xmlGregorianCalendar.getDay ()); 

6. Konklusjon

I denne raske opplæringen har vi dekket transformasjonene mellom LocalDate forekomster og XMLGregorianCalendar, og vice versa.

Og som alltid er eksempelkoden tilgjengelig på GitHub.


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