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.