Java 8 DateTimeFormatter 解析遥远未来的 ISO 日期失败

Java 8 DateTimeFormatter parse fails for ISO dates far in future

我遇到了 DateTimeFormatter.ISO_DATE_TIME 如果年份大于 9999 则无法解析日期的问题。 我正在寻找错误报告或了解我做错了什么。 此外 - JodaTime parse 对同一个字符串有效。 Java 版本 - 8。 此测试失败:

    public void testParseFarInTheFuture()
    {
        String str = "10000-04-11T01:24:55.887-03:56";

        DateTimeFormatter.ISO_DATE_TIME.parse(str);
    }

与 9999 年相同的测试有效。

是我做错了什么还是有错误?

前置+

  • 超过四位数的年份应该有一个 前导加号 字符 (+) 作为正数年份 (AD)。
  • 具有任何整数计数的负数年份 (BC) 始终以减号 (-) 开头。

java.time 类 通常遵循 ISO 8601 标准中规定的规则。请参阅 handling years in ISO 8601 上的维基百科页面。

代码:

OffsetDateTime ldt = OffsetDateTime.parse( "+10000-04-11T01:24:55.887-03:56" ) ;

看到这个code run live at IdeOne.com