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
ZonedDateTimeje nemenný, rovnako ako ostatné triedy zjava.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 |