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" ) ;
我遇到了 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" ) ;