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.


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