【发布时间】:2019-06-25 16:51:54
【问题描述】:
我必须使用时区“ET”(东部时间)。在 Java 中,没有 ZoneId.of("ET")。
我应该使用哪一个来正确表示“ET”:
ZoneId TIMEZONE_ET = ZoneId.of("US/Eastern");
或
ZoneId TIMEZONE_ET = ZoneId.of("America/New_York");
【问题讨论】:
-
您是否阅读了 ZoneId 的 javadoc?它解释了这些名称的来源及其优先级。
-
@JClassic 不是一个好主意..如果我使用它,我必须每年更改 1 次..
-
@YCF_L - 不,我很确定
US/Eastern是东部地区,这是一年中的东部时间和东部时间的一部分。ZoneId.of("US/Eastern").getRules().isDaylightSavings(Instant.parse("2019-07-01T00:00:00Z"))返回true,它不会在东部标准时间。 -
除非纽约更改其时区,使其不再位于东部时区,否则我看不出这有什么关系。但是考虑到 “我必须使用时区“ET”(东部时间)......” 那么......这就是我会做的。
-
@nimo23 - 自从你接受它以来,我已经在很大程度上改变了我的答案。我想我应该提请您注意
US/Eastern已经过时并且可能已被弃用的事实。查看我的编辑和问题的其他答案。