我遇到了一个问题,如果年份超过9999,则无法解析日期.

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

        DateTimeFormatter.ISO_DATE_TIME.parse(str);
    }

9999年的测试同样有效.

我做错什么了还是有漏洞?

推荐答案

Prepend +

  • 四位数以上的年份的正年份(AD)应为leading PLUS SIGN个字符(+).
  • 任何整数计数的负年份(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.

Java相关问答推荐

缩小画布比例后更改滚动窗格的内部大小

如何配置ActiveMQ Artemis以使用AMQP 1.0和其他协议与Java

是否保证在事务性块的末尾标记违反约束?

如何判断一个矩阵是否为有框矩阵?

编译多个.Java文件并运行一个依赖于用户参数的文件

RichFaces 3.x-Spring Boot-迁移web.xml

由于我在Main方法中关闭了 scanner ,但在该方法中创建了一个新的 scanner ,因此出现了错误

如何从JNI方法正确调用NSOpenPanel以在正确的线程上运行?

如何解释Java中for-each循环中对Iterable的强制转换方法引用?

如何对多个字段进行分组和排序?

try 在Android Studio中的infoWindow中使用EditText(Java)

buildDir:File!&#的getter解决方案是什么?39.被抛弃

Java.lang.invke.LambdaConversionException:实例方法InvokeVirtual的参数数量不正确

如何生成指定范围内的11位序列号?

找出承载Cargo 的最小成本

有没有办法知道在合并中执行了什么操作?

如何对存储为字符串的大数字数组进行排序?

HBox内部的左对齐按钮(如果重要的话,在页码内)

降低无向图的时间复杂度

在处理剩余元素之前从流中获取并处理第一个元素的优雅方法