Naformátujte ZonedDateTime na reťazec

1. Prehľad

V tomto rýchlom návode uvidíme, ako previesť súbor ZonedDateTime do a String.

Pozrime sa tiež na to, ako analyzovať a ZonedDateTime od a String.

2. Vytvorenie a ZonedDateTime

Najskôr začneme s ZonedDateTime s časovým pásmom UTC. Existuje niekoľko spôsobov, ako to môžeme dosiahnuť.

Môžeme určiť rok, mesiac, deň atď.:

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

Môžeme tiež vytvoriť a ZonedDateTime od aktuálneho dátumu a času:

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

Alebo môžeme vytvoriť ZonedDateTime z existujúceho LocalDateTime:

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

3. ZonedDateTime do String

Teraz konvertujme naše ZonedDateTime do a String. Pre to, použijeme DateTimeFormatter trieda.

Existuje niekoľko špeciálnych formátovačov, ktoré môžeme použiť na zobrazenie údajov časových pásiem. Celý zoznam formátovačov nájdete tu, ale pozrieme sa na zopár najbežnejších formátovačov.

Ak chceme na zobrazenie posunu časového pásma môžeme použiť formátovač „Z“ alebo „X“:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("MM / dd / rrrr - HH: mm: ss Z"); Reťazec formattedString = zonedDateTime.format (formátovač);

Takto by sme dosiahli takýto výsledok:

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

Na vloženie názvu časovej zóny môžeme použiť malé písmeno „z“:

DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern ("MM / dd / rrrr - HH: mm: ss z"); Reťazec formattedString2 = zonedDateTime.format (formatter2);

Výsledkom by bolo:

1. 2. 2018 - 13:45:30 UTC

4. String do ZonedDateTime

Tento proces môže fungovať aj opačne. Môžeme vziať reťazec a previesť ho späť na a ZonedDateTime.

Jednou z možností, ako to urobiť, je použitie statický analyzovať () metóda ZonedDateTime trieda:

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

Táto metóda používa ISO_ZONED_DATE_TIME formátovač. Existuje tiež preťažená verzia metódy, ktorá vyžaduje a DateTimeFormatter parameter. Reťazec však musí obsahovať identifikátor zóny, inak dostaneme výnimku:

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

Druhou možnosťou na získanie a ZonedDateTime od a String zahŕňa 2 kroky: prevedenie reťazca na a LocalDateTime, potom tento objekt do 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));

Táto nepriama metóda jednoducho kombinuje dátum a čas s ID zóny:

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

Ak sa chcete dozvedieť viac informácií o analýze reťazca k dátumom, prečítajte si náš podrobnejší článok o analýze dátumu.

5. Záver

V tomto článku sme videli, ako vytvoriť ZonedDateTimea ako ho naformátovať ako String.

Tiež sme sa rýchlo pozreli na to, ako analyzovať reťazec dátumu a času a konvertovať na ZonedDateTime.

Zdrojový kód tohto tutoriálu je k dispozícii na Github.


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