V Java 8 DateTime API existuje třída pro uchovávání data včetně časové zóny ZonedDateTime. Údaj o časové zóně může být reprezentován třídami ZoneId a ZoneOffset, kdy ZoneId uchovává časovou zónu a ZoneOffset posun oproti Greenwich času. Pokud tedy máme ZonedDateTime 2016-09-07T08:22:40.492+02:00[Europe/Prague]
pak Europe/Prague
představuje ZoneId a +02:00
ZoneOffset. ZoneOffset dědí ze ZoneId. Obě tyto třídy poskytují statickou metodu of(String zoneId), která na typu textového parametru vrací buď instanci ZoneId nebo ZoneOffset.
ZoneId zi1 = ZoneId.of("+3");
Vrátí ZoneOffset a protože ZoneOffset dědí ze ZoneId, je možné do datového typu ZoneId přiřadit ZoneOffset.
ZoneOffset zo1 = ZoneOffset.of("+3");
Vrátí ZoneOffset.
ZoneId zi2 = ZoneId.of("Asia/Vladivostok");
Vrátí ZoneId.
ZoneOffset zo2 = ZoneOffset.of("Asia/Vladivostok");
Vyhodí výjimku java.time.DateTimeException: Invalid ID for ZoneOffset, invalid format
– do ZoneOffset se snažíme přiřadit ZoneId.