Sobes.tech
Junior

Co je ZonedDateTime?

sobes.tech AI

Odpověď od AI

ZonedDateTime — je třída z balíčku java.time, která představuje datum a čas s správným posunem od UTC* a časová zóna s ní spojená. Zohledňuje pravidla přechodu na letní čas a další specifika dané zóny.

Na rozdíl od OffsetDateTime, který ukládá pouze posun od UTC, ZonedDateTime udržuje odkaz na objekt ZoneId, který reprezentuje časovou zónu, což umožňuje správné provádění aritmetických operací s časem s ohledem na změny času během roku.

Hlavní vlastnosti:

  • Kombinace: Spojuje datum, čas a časovou zónu.
  • Přesnost: Zohledňuje pravidla přechodu na letní čas (DST) a další změny v zóně.
  • Neměnnost: Objekty ZonedDateTime jsou neměnné, stejně jako jiné třídy z java.time.

Příklad vytvoření:

// Vytvoření `ZonedDateTime` pro konkrétní čas a zónu
ZonedDateTime dateTimeInLondon = ZonedDateTime.of(2023, 10, 26, 10, 30, 0, 0, ZoneId.of("Europe/London"));
System.out.println(dateTimeInLondon);

// Získání aktuálního `ZonedDateTime` v systémové zóně
ZonedDateTime now = ZonedDateTime.now();
System.out.println(now);

Použití:

  • Reprezentace událostí vázaných na konkrétní místo a čas (například začátek koncertu v určitém městě).
  • Výpočty mezi časovými body v různých časových zónách s ohledem na pravidla DST.
  • Práce s externími systémy nebo databázemi, které vyžadují specifikaci časové zóny.

Porovnání s jinými třídami:

Třída Datum Čas Posun od UTC Časová zóna Zohledňuje DST
LocalDateTime Ano Ano Ne Ne Ne
OffsetDateTime Ano Ano Ano Ne Částečně
ZonedDateTime Ano Ano Ano Ano Ano