org.apache.commons.lang.time.DateUtils中的年度金额限制



为什么org.apache.commons.lang.time.DateUtils的源代码中对年数有限制?

if (val.get(Calendar.YEAR) > 280000000) {
throw new ArithmeticException("Calendar value too large for accurate calculations");
}

我想知道,为什么正好是2.8亿,而不是285。我已经猜到,我们不会再有java了。我也知道,Long可以在几毫秒内保持292278994年。

好吧,我不得不猜测,但这可能与以下方面有关:java 日期何时会崩溃?

由于 280,000,000 年非常接近最大值 292,278,994,因此可能存在任何预期的准确性问题,因此消息说

日历值太大,无法准确计算。

顺便说一句,我们现在知道宇宙何时结束: 周日 8月 17 日 07:12:55 GMT 292278994 - ;)

正如托马斯所指出的,由于日期以64位存储,因此存在困境。该防护装置于2004年推出。有关详细信息,请参阅测试用例以及错误 LANG-24。

最新更新