【发布时间】:2020-04-17 07:49:58
【问题描述】:
我正在尝试将日期从字符串解析为ZonedDateTimes,但遇到了一个奇怪的问题。
2020-11-01T01:00-05:00[America/New_York]
这是今年 EDT 结束后的一个小时。当我将它传递给ZonedDateTime.parse 时,我得到了
ZonedDateTime.parse("2020-11-01T01:00-05:00[America/New_York]")
// 2020-11-01T01:00-04:00[America/New_York]
如果我这样做了
ZonedDateTime.parse("2020-11-01T01:00-04:00[America/New_York]").plusHours(1)
我明白了
2020-11-01T01:00-05:00[America/New_York]
所以并不是说 Java 不能代表这个模棱两可的值什么的..
谁能向我解释这种行为和可能的解决方案?
注意:我使用的是 Java 8
【问题讨论】:
-
抱歉,我无法重现此内容。如果我这样做
System.out.println(ZonedDateTime.parse("2020-11-01T01:00-05:00[America/New_York]"));我会得到 2020-11-01T01:00-05:00[America/New_York]。你用的是什么java版本? -
@AmirSchnell 我可以在 Java 8 上重现。
-
@Sweeper 我使用的是 Java 11,所以这可能是 JDK 问题
-
@AmirSchnell 是的,我也在使用 Java8
-
我认为这与link有关