Sobes.tech
Junior

Čo je ZonedDateTime?

sobes.tech AI

Odpoveď od AI

ZonedDateTime je trieda z balíka java.time, ktorá predstavuje dátum a čas s správnym posunom od UTC* a súvisiacou časovou zónou. Zohľadňuje pravidlá prechodu na letný čas a ďalšie špecifiká danej časovej zóny.

Na rozdiel od OffsetDateTime, ktorý uchováva iba posun od UTC, ZonedDateTime uchováva odkaz na objekt ZoneId, ktorý predstavuje časovú zónu, čo umožňuje správne vykonávať aritmetické operácie s časom s prihliadnutím na zmeny času počas roka.

Hlavné vlastnosti:

  • Kombinácia: Spája dátum, čas a časovú zónu.
  • Presnosť: Zohľadňuje pravidlá prechodu na letný čas (DST) a ďalšie zmeny v rámci zóny.
  • Immutable: Objekt ZonedDateTime je nemenný, rovnako ako ostatné triedy z java.time.

Príklad vytvorenia:

// Vytvorenie ZonedDateTime pre určitý čas v určitej zóne
ZonedDateTime dateTimeInLondon = ZonedDateTime.of(2023, 10, 26, 10, 30, 0, 0, ZoneId.of("Europe/London"));
System.out.println(dateTimeInLondon);

// Získanie aktuálneho ZonedDateTime v systémovej zóne
ZonedDateTime now = ZonedDateTime.now();
System.out.println(now);

Použitie:

  • Zobrazenie udalostí viazaných na konkrétne miesto a čas (napríklad čas začiatku koncertu v danom meste).
  • Výpočty medzi časovými bodmi v rôznych časových pásmach s prihliadnutím na pravidlá DST.
  • Práca s externými systémami alebo databázami, ktoré vyžadujú zadanie časovej zóny.

Porovnanie s inými triedami:

Trieda Dátum Čas Posun od UTC Časová zóna Zohľadňuje DST
LocalDateTime Áno Áno Nie Nie Nie
OffsetDateTime Áno Áno Áno Nie Čiastočne
ZonedDateTime Áno Áno Áno Áno Áno