Konverzia medzi LocalDate a XMLGregorianCalendar

1. Prehľad

V tomto rýchlom návode si povieme LocalDate a XMLGregorianCalendar a poskytnúť príklady konverzie medzi týmito dvoma typmi.

2. XMLGregorianCalendar

Štandard XML Schema definuje jasné pravidlá pre zadávanie dátumov vo formáte XML. Ak chcete použiť tento formát, trieda Java XMLGregorianCalendar, zavedený v prostredí Java 1.5, je predstavením dátových typov typu dátum / čas W3C XML Schema 1.0.

3. LocalDate

A LocalDate inštancia predstavuje dátum bez časovej zóny v kalendárnom systéme ISO-8601. Ako výsledok, LocalDate je napríklad vhodný na ukladanie narodenín, ale nie na nič, čo súvisí s časom. Java predstavená LocalDate vo verzii 1.8.

4. Od LocalDate do XMLGregorianCalendar

Najprv uvidíme, ako previesť z LocalDate do XMLGregorianCalendar. S cieľom vygenerovať novú inštanciu súboru XMLGregorianCalendar, používame a DataTypeFactory z javax.xml.datatype balíček.

Vytvorme teda inštanciu LocalDate a konvertovať na 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); 

Ako už bolo uvedené, XMLGregorianCalendar inštancia má možnosť mať informácie o časovom pásme. Avšak LocalDate nemá žiadne informácie o čase.

Preto keď prevádzame konverziu, hodnota časového pásma zostane ako FIELD_UNDEFINED.

5. Od XMLGregorianCalendar do LocalDate

Rovnako tak teraz uvidíme, ako vykonať konverziu naopak. Ako sa ukazuje, prevod z a XMLGregorianCalendar do LocalDate je oveľa jednoduchšie.

Opäť od LocalDate nemá informácie o čase, a LocalDate inštancia môže obsahovať iba podmnožinu súboru XMLGregorianCalendar informácie.

Vytvorme inštanciu XMLGregorianCalendar a vykonať prevod:

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. Záver

V tomto rýchlom výučbe sme sa zaoberali transformáciami medzi nimi LocalDate inštancie a XMLGregorianCalendar, a naopak.

A ako vždy je vzorový kód k dispozícii na GitHub.


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