java .time.zone.ZoneRulesException: Неизвестный идентификатор часового пояса - PullRequest
0 голосов
/ 07 мая 2020

Если я перейду в часовой пояс «EST», будет ошибка

«java .time.zone.ZoneRulesException: Unknown time-zone ID», но если я перейду в ZoneID, например «America» / Mexico_City "", работает хорошо, у меня вопрос, почему трехбуквенные идентификаторы часовых поясов не работают? как решить эту проблему?

LocalDateTime localDateTime = LocalDateTime.parse("2019-10-25T12:15:30");
System.out.println(localDateTime.toInstant(ZoneOffset.of(String.valueOf(ZoneId.of("EST").getRules().getOffset(LocalDateTime.now())))).toEpochMilli());

1 Ответ

1 голос
/ 07 мая 2020

Прочтите документацию ZoneId.SHORT_IDS:

Эта карта позволяет продолжать использовать идентификаторы с помощью заводского метода of(String, Map).

Итак, используйте этот заводской метод:

ZoneId.of("EST", ZoneId.SHORT_IDS)

Или, конечно, используйте значение с псевдонимом напрямую:

ZoneId.of("-05:00")

Или, если вы действительно имеете в виду «часовой пояс в Нью-Йорк », в котором наблюдается переход на летнее время:

ZoneId.of("America/New_York")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...