java.time.zone.ZoneRulesException:未知时区ID



如果我通过了时区"EST",它将具有

"java.time.zone.ZoneRulesException:未知时区ID"错误,但如果我像"America/Mexico_City"一样输入ZoneID,效果很好,我的问题是为什么三个字母的时区ID不起作用?如何解决这个问题?

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());

阅读ZoneId.SHORT_IDS:的文档

此映射允许通过of(String, Map)工厂方法继续使用ID。

所以,使用工厂方法:

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

或者,当然,直接使用别名值:

ZoneId.of("-05:00")

或者,如果你的意思是"纽约的时区",在这里可以观察到夏令时:

ZoneId.of("America/New_York")

最新更新