Formázza a ZonedDateTime karakterláncot

1. Áttekintés

Ebben a gyors bemutatóban megnézzük, hogyan lehet a ZonedDateTime a Húr.

Megvizsgáljuk azt is, hogyan kell elemezni a ZonedDateTime a-tól Húr.

2. A. Létrehozása ZonedDateTime

Először egy ZonedDateTime UTC időzónával. Ezt többféleképpen is elérhetjük.

Megadhatjuk az évet, hónapot, napot stb:

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

Hozhatunk létre a ZonedDateTime az aktuális dátumtól és időtől:

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

Vagy létrehozhatunk egy ZonedDateTime egy létezőtől LocalDateTime:

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

3. ZonedDateTime nak nek Húr

Most térjünk át a mi ZonedDateTime a Húr. Ezért, használjuk a DateTimeFormatter osztály.

Van néhány speciális formázó, amellyel megjeleníthetjük az időzóna adatait. A formázók teljes listája itt található, de megnézünk néhányat a gyakoribbak közül.

Ha akarjuk az időzóna eltolásának megjelenítéséhez használhatjuk a formázó „Z” vagy „X”:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("HH / nn / éééé - ÓÓ: mm: ss Z"); String formattedString = zonedDateTime.format (formázó);

Ez egy ilyen eredményt adna nekünk:

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

Az időzóna nevének felvételéhez használhatunk kis z betűt:

DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern ("HH / nn / éééé - ÓÓ: mm: ss z"); String formattedString2 = zonedDateTime.format (formatter2);

Ennek kimenete a következő lenne:

2018.01.01 - 13:45:30 UTC

4. Húr nak nek ZonedDateTime

Ez a folyamat fordítva is működhet. Foghatunk egy karakterláncot, és visszaállíthatjuk a-ra ZonedDateTime.

Ennek egyik lehetősége a statikus elemzés () módszere ZonedDateTime osztály:

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

Ez a módszer a ISO_ZONED_DATE_TIME formázó. Van egy túlterhelt változata is a metódusnak, amely a DateTimeFormatter paraméter. A karakterláncnak azonban tartalmaznia kell egy zónaazonosítót, különben kivételt kapunk:

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

A második lehetőség a ZonedDateTime a-tól Húr 2 lépésből áll: a húr konvertálása a-ra LocalDateTime, akkor ez a tárgy 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));

Ez a közvetett módszer egyszerűen ötvözi a dátum és idő és a zóna azonosítóját:

INFO: 2011-12-03T10: 15: 30 + 02: 00 [Európa / Athén]

Ha többet szeretne megtudni a String dátumokra elemzéséről, olvassa el a dátum elemzésének részletesebb cikkét.

5. Következtetés

Ebben a cikkben megtudtuk, hogyan hozhat létre a ZonedDateTime, és hogyan formázható a Húr.

Gyorsan megvizsgáltuk a dátum és az idő karakterláncának elemzését és a-ba való konvertálását is ZonedDateTime.

Az oktatóanyag forráskódja elérhető a Github oldalon.