我遇到了一个问题,其中 DateTimeFormatter.ISO_DATE_TIME
如果年份大于 9999,则无法解析日期。
我正在寻找错误报告或了解我做错了什么。
此外 - JodaTime
解析适用于相同的字符串。
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" ) ;
关于Java 8 DateTimeFormatter 解析在未来很远的 ISO 日期失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71958727/