Konvertálás a LocalDate és az XMLGregorianCalendar között

1. Áttekintés

Ebben a gyors bemutatóban megbeszéljük LocalDate és XMLGregorianCalendar és adjon példákat a két típus közötti átalakításra.

2. XMLGregorianCalendar

Az XML séma szabvány egyértelmű szabályokat határoz meg a dátumok XML formátumban történő megadásához. Ennek a formátumnak a használatához a Java osztály XMLGregorianCalendar, a Java 1.5-ben bevezetve a W3C XML Schema 1.0 dátum / idő adattípusok ábrázolása.

3. LocalDate

A LocalDate a példány időzónát nem tartalmazó dátumot jelent az ISO-8601 naptárrendszerben. Ennek eredményeként LocalDate alkalmas például a születésnapok tárolására, de semmi nem kapcsolódik az időhöz. Bemutatták a Java-t LocalDate az 1.8-as verzióban.

4. Feladó LocalDate nak nek XMLGregorianCalendar

Először meglátjuk, hogyan lehet konvertálni LocalDate nak nek XMLGregorianCalendar. A. Új példányának generálása érdekében XMLGregorianCalendar, használjuk a DataTypeFactory tól javax.xml.datatype csomag.

Tehát hozzunk létre egy példányt LocalDate és alakítsa át 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); 

Mint korábban megjegyeztük, egy XMLGregorianCalendar példánynak lehetősége van időzóna információkra. Azonban, LocalDate nincs információja az időről.

Ezért amikor végrehajtjuk az átalakítást, az időzóna értéke a következő marad FIELD_UNDEFINED.

5. Feladó XMLGregorianCalendar nak nek LocalDate

Hasonlóképpen, most meglátjuk, hogyan kell az átalakítást fordítva végrehajtani. Mint kiderült, átalakítás a-ból XMLGregorianCalendar nak nek LocalDate sokkal könnyebb.

Ismét azóta LocalDate nincs információja az időről, a LocalDate a példány csak a XMLGregorianCalendar információ.

Hozzunk létre egy példányt XMLGregorianCalendar és hajtsa végre az átalakítást:

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. Következtetés

Ebben a gyors bemutatóban bemutattuk a közötti átalakításokat LocalDate esetek és XMLGregorianCalendar, és fordítva.

És mint mindig, a mintakód elérhető a GitHubon.


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