Java-datum converteren naar OffsetDateTime

1. Inleiding

In deze tutorial leren we het verschil tussen Datum en OffsetDateTime. We leren ook hoe u van de een naar de ander converteert.

2. Verschil tussen Datum en OffsetDateTime

OffsetDateTime werd geïntroduceerd in JDK 8 als een modern alternatief voor java.util.Date.

OffsetDateTime is een threadveilige klasse die datum en tijd opslaat met een precisie van nanoseconden. Datum, aan de andere kant, is niet draadveilig en slaat tijd op tot op de milliseconde nauwkeurig.

OffsetDateTime is een op waarden gebaseerde klasse, wat betekent dat we is gelijk aan bij het vergelijken van referenties in plaats van de typische ==.

De output van OffsetDateTime‘S toString methode is in ISO-8601-formaat, terwijl Datum‘S toString is in een aangepast niet-standaard formaat.

Laten we bellen toString een van beide klassen om het verschil te zien:

Datum: za 19 oktober 17:12:30 2019 OffsetDateTime: 2019-10-19T17: 12: 30.174Z

Datum kan geen tijdzones en bijbehorende offsets opslaan. Het enige dat a Datum object bevat is het aantal milliseconden sinds 1 januari 1970, 00:00:00 UTC, dus als onze tijd niet in UTC is, moeten we de tijdzone opslaan in een helper-klasse. Integendeel, OffsetDateTime slaat het ZoneOffset intern.

3. Omzetten Datum naar OffsetDateTime

Omzetten Datum naar OffsetDateTime is vrij simpel. Als onze Datum is in UTC, we kunnen het converteren met een enkele uitdrukking:

Datum datum = nieuwe datum (); OffsetDateTime offsetDateTime = date.toInstant () .atOffset (ZoneOffset.UTC);

Als het origineel Datum niet in UTC staat, kunnen we de offset leveren (opgeslagen in een helperobject, omdat zoals eerder vermeld de Date-klasse geen tijdzones kan opslaan).

Laten we zeggen ons origineel Datum is +3: 30 (tijd in Teheran):

int uur = 3; int minuut = 30; offsetDateTime = date.toInstant () .atOffset (ZoneOffset.ofHoursMinutes (uur, minuut));

OffsetDateTime biedt veel handige methoden die daarna kunnen worden gebruikt. We kunnen bijvoorbeeld eenvoudig getDayOfWeek (), getDayOfMonth (), en getDayOfYear (). Het is ook heel gemakkelijk om twee OffsetDateTime-objecten mee te vergelijken isAfter en isBefore methoden.

Bovenal, het is een goede gewoonte om het verouderde Datum klasse helemaal.

4. Conclusie

In deze tutorial hebben we geleerd hoe eenvoudig het is om te converteren van Datum naar OffsetDateTime.

En, zoals altijd, is de code beschikbaar op Github.