Formatteer ZonedDateTime naar String

1. Overzicht

In deze korte tutorial zullen we zien hoe u een ZonedDateTime naar een Draad.

We zullen ook kijken hoe u een ZonedDateTime van een Draad.

2. Een ZonedDateTime

Eerst beginnen we met een ZonedDateTime met een tijdzone van UTC. Er zijn verschillende manieren waarop we dit kunnen bereiken.

We kunnen het jaar, de maand, de dag, enz. Specificeren:

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

We kunnen ook een ZonedDateTime vanaf de huidige datum en tijd:

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

Of we kunnen een ZonedDateTime van een bestaand LocalDateTime:

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

3. ZonedDateTime naar Draad

Laten we nu onze ZonedDateTime naar een Draad. Voor deze, we zullen de DateTimeFormatter klasse.

Er zijn een paar speciale formatters die we kunnen gebruiken om tijdzonegegevens weer te geven. De volledige lijst met opmaakprogramma's is hier te vinden, maar we zullen enkele van de meest voorkomende bekijken.

Als we willen om de tijdzoneverschuiving weer te geven, kunnen we de formatter "Z" of "X":

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

Dit zou ons een resultaat als dit geven:

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

Om de naam van de tijdzone op te nemen, kunnen we een kleine "z" gebruiken:

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

De output hiervan zou zijn:

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

4. Draad naar ZonedDateTime

Dit proces kan ook omgekeerd werken. We kunnen een string nemen en deze weer omzetten in een ZonedDateTime.

Een optie om dit te doen is door de statisch ontleden () methode van de ZonedDateTime klasse:

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

Deze methode maakt gebruik van de ISO_ZONED_DATE_TIME formatter. Er is ook een overbelaste versie van de methode waarvoor een DateTimeFormatter parameter. De string moet echter een zone-ID bevatten, anders krijgen we een uitzondering:

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

Een tweede optie om een ZonedDateTime van een Draad omvat 2 stappen: het converteren van de String naar een LocalDateTime, dan dit object naar een 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));

Deze indirecte methode combineert eenvoudig de datum-tijd met een zone-ID:

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

Bekijk ons ​​meer diepgaande artikel over het parseren van datums voor meer informatie over het parseren van tekenreeksen naar datums.

5. Conclusie

In dit artikel hebben we gezien hoe u een ZonedDateTime, en hoe u het kunt formatteren als een Draad.

We hebben ook snel gekeken hoe u een datum-tijdreeks kunt ontleden en converteren naar een ZonedDateTime.

De broncode voor deze tutorial is beschikbaar op Github.


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