Oblikujte ZonedDateTime u niz

1. Pregled

U ovom brzom vodiču vidjet ćemo kako pretvoriti ZonedDateTime do a Niz.

Također ćemo pogledati kako raščlaniti a ZonedDateTime od Niz.

2. Stvaranje a ZonedDateTime

Prvo ćemo započeti s ZonedDateTime s vremenskom zonom UTC. Postoji nekoliko načina na koje to možemo postići.

Možemo odrediti godinu, mjesec, dan itd.:

ZonedDateTime zonedDateTimeOf = ZonedDateTime.of (2018, 01, 01, 0, 0, 0, 0, ZoneId.of ("UTC"));

Također možemo stvoriti i ZonedDateTime od trenutnog datuma i vremena:

ZonedDateTime zonedDateTimeNow = ZonedDateTime.now (ZoneId.of ("UTC"));

Ili možemo stvoriti ZonedDateTime od postojećeg LocalDateTime:

LocalDateTime localDateTime = LocalDateTime.now (); ZonedDateTime zonedDateTime = ZonedDateTime.of (localDateTime, ZoneId.of ("UTC"));

3. ZonedDateTime do Niz

Sada, pretvorimo naše ZonedDateTime do a Niz. Za ovo, koristit ćemo DateTimeFormatter razred.

Postoji nekoliko posebnih uređaja za formatiranje koji možemo koristiti za prikaz podataka vremenske zone. Cjelovit popis programa za oblikovanje možete pronaći ovdje, ali mi ćemo pogledati nekoliko najčešćih.

Ako želimo za prikaz pomaka vremenske zone možemo koristiti oblikovač "Z" ili "X":

DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("MM / dd / gggg - VH: mm: ss Z"); Niz formattedString = zonedDateTime.format (formatter);

To bi nam dalo ovakav rezultat:

02/01/2018 - 13:45:30 +0000

Da bismo uključili naziv vremenske zone, možemo upotrijebiti malo slovo "z":

DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern ("MM / dd / gggg - VH: mm: ss z"); Niz formattedString2 = zonedDateTime.format (formatter2);

Rezultat bi bio:

02.01.2018. - 13:45:30 UTC

4. Niz do ZonedDateTime

Ovaj postupak može raditi i obrnuto. Možemo uzeti niz i pretvoriti ga natrag u ZonedDateTime.

Jedna od mogućnosti za to je korištenje statički raščlaniti () metoda ZonedDateTime razred:

ZonedDateTime zonedDateTime = ZonedDateTime.parse ("2011-12-03T10: 15: 30 + 01: 00");

Ova metoda koristi ISO_ZONED_DATE_TIME oblikovač. Postoji i preopterećena verzija metode koja uzima a DateTimeFormatter parametar. Međutim, String mora sadržavati identifikator zone ili ćemo dobiti iznimku:

assertThrows (DateTimeParseException.class, () -> ZonedDateTime.parse ("2011-12-03T10: 15: 30", DateTimeFormatter.ISO_DATE_TIME));

Druga opcija za dobivanje a ZonedDateTime od Niz uključuje 2 koraka: pretvaranje niza u a LocalDateTime, onda ovaj objekt a ZonedDateTime:

ZoneId timeZone = ZoneId.systemDefault (); ZonedDateTime zonedDateTime = LocalDateTime.parse ("2011-12-03T10: 15: 30", DateTimeFormatter.ISO_DATE_TIME) .atZone (timeZone); log.info (zonedDateTime.format (DateTimeFormatter.ISO_ZONED_DATE_TIME));

Ova neizravna metoda jednostavno kombinira datum i vrijeme s ID-om zone:

INFO: 2011-12-03T10: 15: 30 + 02: 00 [Europa / Atena]

Da biste saznali više o raščlanjivanju niza na datume, pogledajte naš detaljniji članak o raščlanjivanju datuma.

5. Zaključak

U ovom smo članku vidjeli kako stvoriti ZonedDateTimei kako ga oblikovati kao Niz.

Također smo na brzinu pogledali kako raščlaniti vremenski niz datuma i pretvoriti ga u ZonedDateTime.

Izvorni kôd ovog vodiča dostupan je na Githubu.