为什么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。