A Java Date konvertálása OffsetDateTime-re

1. Bemutatkozás

Ebben az oktatóanyagban megismerhetjük a különbséget Dátum és OffsetDateTime. Mi is megtanuljuk hogyan lehet konvertálni egyikről a másikra.

2. Különbség Dátum és OffsetDateTime

OffsetDateTime modern alternatívájaként a JDK 8-ban vezették be java.util.Dátum.

OffsetDateTime egy szálbiztos osztály, amely dátumot és időpontot nanoszekundum pontossággal tárol. Dátummásrészt nem biztonságos a menetben, és ezredmásodpercek pontosságáig tárolja az időt.

OffsetDateTime egy értékalapú osztály, ami azt jelenti, hogy használnunk kell egyenlő referenciák összehasonlításakor a tipikus == helyett.

A kimenet OffsetDateTime’S Sztring módszer ISO-8601 formátumban van, míg Dátum’S Sztring egyedi, nem szabványos formátumban van.

Hívjuk Sztring mindkét osztályon, hogy lássa a különbséget:

Dátum: Szombat 19, 19 17:12:30, 2019 OffsetDateTime: 2019-10-19T17: 12: 30.174Z

Dátum nem tudja tárolni az időzónákat és a megfelelő eltolásokat. Az egyetlen dolog, amit a Dátum Az objektum tartalmazza az ezredmásodpercek száma 1970. január 1., 00:00:00 UTC óta, így ha az időnk nem UTC, akkor az időzónát egy segítő osztályban kell tárolnunk. Ellenkezőleg, OffsetDateTime tárolja a ZoneOffset belsőleg.

3. Konvertálás Dátum nak nek OffsetDateTime

Konvertálás Dátum nak nek OffsetDateTime nagyon egyszerű. Ha a mi Dátum UTC-ben van, egyetlen kifejezéssel konvertálhatjuk:

Dátum dátum = új dátum (); OffsetDateTime offsetDateTime = date.toInstant () .atOffset (ZoneOffset.UTC);

Ha az eredeti Dátum nincs UTC-ben, megadhatjuk az eltolást (egy segítőobjektumban tárolva, mert ahogy korábban említettük, a Date osztály nem képes tárolni az időzónákat).

Mondjuk az eredetinket Dátum +3: 30 (teheráni idő szerint):

int óra = 3; int perc = 30; offsetDateTime = date.toInstant () .atOffset (ZoneOffset.ofHoursMinutes (óra, perc));

OffsetDateTime sok hasznos módszert biztosít, amelyek később felhasználhatók. Például egyszerűen getDayOfWeek (), getDayOfMonth (), és getDayOfYear (). Két OffsetDateTime objektum összehasonlítása is nagyon egyszerű isAfter és isElőtt mód.

Mindenek felett, jó gyakorlat elkerülni az elavultakat Dátum osztály teljesen.

4. Következtetés

Ebben az oktatóanyagban megtudtuk, mennyire egyszerű konvertálni Dátum nak nek OffsetDateTime.

És mint mindig, a kód elérhető a Githubon.