Výjimka java.time.DateTimeException: Invalid ID for ZoneOffset, invalid format

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.

Napsat komentář