Prevod dátumu Java na OffsetDateTime
1. Úvod
V tomto tutoriále sa dozvieme o rozdieloch medzi Dátum a OffsetDateTime. Učíme sa tiež ako prevádzať z jedného do druhého.
2. Rozdiel medzi Dátum a OffsetDateTime
OffsetDateTime bol predstavený v JDK 8 ako moderná alternatíva k java.util.Date.
OffsetDateTime je trieda bezpečná pre vlákna, ktorá ukladá dátum a čas s presnosťou na nanosekundy. Dátum, na druhej strane nie je bezpečný pre vlákna a šetrí čas s presnosťou na milisekundy.
OffsetDateTime je trieda založená na hodnotách, čo znamená, že musíme používať rovná sa pri porovnaní referencií namiesto typického ==.
Výstup z OffsetDateTime‘S natiahnuť metóda je vo formáte ISO-8601, zatiaľ čo Dátum‘S natiahnuť je v neštandardnom formáte na mieru.
Zavoláme natiahnuť na oboch triedach vidieť rozdiel:
Dátum: Sat Oct 19 17:12:30 2019 OffsetDateTime: 2019-10-19T17: 12: 30.174Z
Dátum nemôže ukladať časové pásma a príslušné posuny. Jediná vec, ktorá a Dátum objekt obsahuje je počet milisekúnd od 1. januára 1970, 00:00:00 UTC, takže ak náš čas nie je v UTC, mali by sme časové pásmo uložiť do triedy pomocníka. Naopak, OffsetDateTime obchody ZoneOffset vnútorne.
3. Konvertovanie Dátum do OffsetDateTime
Prevádza Dátum do OffsetDateTime je dosť jednoduché. Ak náš Dátum je v UTC, môžeme ho previesť jediným výrazom:
Dátum dátum = nový Dátum (); OffsetDateTime offsetDateTime = date.toInstant () .atOffset (ZoneOffset.UTC);
Ak originál Dátum nie je v UTC, môžeme poskytnúť offset (uložený v pomocnom objekte, pretože ako už bolo spomenuté vyššie, trieda Date nemôže ukladať časové pásma).
Povedzme náš originál Dátum je +3: 30 (teheránsky čas):
int hodina = 3; int minúta = 30; offsetDateTime = date.toInstant () .atOffset (ZoneOffset.ofHoursMinutes (hodina, minúta));
OffsetDateTime poskytuje mnoho užitočných metód, ktoré sa dajú použiť neskôr. Napríklad môžeme jednoducho getDayOfWeek (), getDayOfMonth ()a getDayOfYear (). Je tiež veľmi ľahké porovnať dva objekty OffsetDateTime s je potom a jePred metódy.
Nad všetkým, je dobrým zvykom vyhnúť sa zastaraným Dátum triedy úplne.
4. Záver
V tomto tutoriáli sme sa dozvedeli, aké ľahké je prevádzať Dátum do OffsetDateTime.
A ako vždy je kód k dispozícii na stránkach Github.