Formater ZonedDateTime til String

1. Oversikt

I denne raske opplæringen vil vi se hvordan du konverterer en ZonedDateTime til en String.

Vi vil også se på hvordan man analyserer a ZonedDateTime fra en String.

2. Opprette en ZonedDateTime

Først begynner vi med en ZonedDateTime med tidssonen UTC. Det er flere måter vi kan oppnå dette på.

Vi kan spesifisere år, måned, dag osv:

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

Vi kan også lage en ZonedDateTime fra gjeldende dato og klokkeslett:

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

Eller vi kan lage en ZonedDateTime fra en eksisterende LocalDateTime:

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

3. ZonedDateTime til String

La oss nå konvertere vår ZonedDateTime til en String. For dette, vi bruker DateTimeFormatter klasse.

Det er noen spesielle formater som vi kan bruke til å vise tidssonedata. Den komplette listen over formatører finner du her, men vi ser på noen av de vanligste.

Hvis vi vil for å vise tidssoneforskyvning, kan vi bruke formatering “Z” eller “X”:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("MM / dd / åååå - HH: mm: ss Z"); String formattedString = zonedDateTime.format (formatter);

Dette vil gi oss et resultat som dette:

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

For å inkludere tidssonenavnet kan vi bruke små bokstaver “z”:

DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern ("MM / dd / åååå - HH: mm: ss z"); String formattedString2 = zonedDateTime.format (formatter2);

Resultatet av dette vil være:

02/01/2018 - 13:45:30 UTC

4. String til ZonedDateTime

Denne prosessen kan også fungere i omvendt retning. Vi kan ta en streng og konvertere den tilbake til en ZonedDateTime.

Et alternativ for å gjøre dette er å bruke statisk analysere () metoden for ZonedDateTime klasse:

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

Denne metoden bruker ISO_ZONED_DATE_TIME formatering. Det er også en overbelastet versjon av metoden som tar en DateTimeFormatter parameter. Strengen må imidlertid inneholde en soneidentifikator, ellers får vi et unntak:

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

Et annet alternativ for å få en ZonedDateTime fra en String innebærer to trinn: konvertere strengen til en LocalDateTime, så dette objektet til en 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));

Denne indirekte metoden kombinerer ganske enkelt dato og klokkeslett med en sone-id:

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

For å lære mer om parsing Streng til datoer, sjekk ut vår mer inngående dataparseringsartikkel.

5. Konklusjon

I denne artikkelen har vi sett hvordan du lager en ZonedDateTime, og hvordan du formaterer det som en String.

Vi har også tatt en rask titt på hvordan vi kan analysere en datotidstreng og konvertere til en ZonedDateTime.

Kildekoden for denne opplæringen er tilgjengelig på Github.


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