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.