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.