Pretvaranje između LocalDate i XMLGregorianCalendar

1. Pregled

U ovom ćemo brzom vodiču razgovarati LocalDate i XMLGregorianCalendar i pružiti primjere konverzije između dvije vrste.

2. XMLGregorianCalendar

Standard XML sheme definira jasna pravila za određivanje datuma u XML formatu. Da bi se koristio ovaj format, Java klasa XMLGregorianCalendar, predstavljen u Javi 1.5 predstavlja prikaz tipova podataka datuma i vremena W3C XML Schema 1.0.

3. LocalDate

A LocalDate instanca predstavlja datum bez vremenske zone u kalendarskom sustavu ISO-8601. Kao rezultat, LocalDate je, na primjer, prikladno za pohranu rođendana, ali ne i ništa povezano s vremenom. Uvedena Java LocalDate u verziji 1.8.

4. Od LocalDate do XMLGregorianCalendar

Prvo ćemo vidjeti kako pretvoriti iz LocalDate do XMLGregorianCalendar. Da bi se generirala nova instanca XMLGregorianCalendar, koristimo a DataTypeFactory od javax.xml.datatype paket.

Pa, kreirajmo instancu LocalDate i pretvoriti ga u 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); 

Kao što je prethodno napomenuto, an XMLGregorianCalendar instanca ima mogućnost dobivanja podataka o vremenskoj zoni. Međutim, LocalDate nema podataka o vremenu.

Stoga, kada izvršimo pretvorbu, vrijednost vremenske zone ostat će kao FIELD_UNDEFINED.

5. Od XMLGregorianCalendar do LocalDate

Isto tako, sada ćemo vidjeti kako izvršiti pretvorbu obrnuto. Kako se ispostavilo, pretvaranje iz a XMLGregorianCalendar do LocalDate je puno lakše.

Opet, od LocalDate nema informacije o vremenu, a LocalDate instanca može sadržavati samo podskup XMLGregorianCalendar informacija.

Stvorimo instancu XMLGregorianCalendar i izvršite pretvorbu:

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. Zaključak

U ovom smo brzom vodiču pokrili transformacije između LocalDate instance i XMLGregorianCalendar, i obrnuto.

Kao i uvijek, uzorak koda dostupan je na GitHubu.


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