如果我通过了时区"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")