Java程序员为什么要关心2038年的bug呢?

时间:2010-11-30 12:24:48

标签: java unix date year2038

2038年Bug已经遍布网络,但这似乎是一个unix问题。这将如何影响java Date?

5 个答案:

答案 0 :(得分:29)

是什么让你觉得它有用? Java的Date类存储64位long(不是32位,与Y2K38一样)。它还存储毫秒,这会缩小范围,但只会略微(相当于~10位)。

在Java中,我们有292278994年的错误。

答案 1 :(得分:4)

我认为它不会像程序员那样影响Java Date类。它已经使用了64位值。如果您使用仍使用32位值的数据存储,我可以看到它是一个问题。我不希望在27年内看到太多的32位操作系统。

答案 2 :(得分:1)

Java和时间不仅限于Date类。

日期/时间通常来自哪里?通常来自System.currentTimeMillis,它是本机方法。它通常不是用Java实现的。返回类型很长,但这意味着很少,因为本机方法可以返回任何只适合long的值。

这一切都取决于操作系统及其JRE的实现。

依赖于64位系统的存在可能是天真的,因为显然有许多嵌入式系统是32位的,并将继续存在。

一般来说,Java暴露于2038问题。

答案 3 :(得分:0)

这可能是2038年日期数据类型滚动的旧C日的遗留问题。对于一些非常应用程序可能会出现问题,但对于Java则不然。打哈欠。

答案 4 :(得分:0)

这不是一个真正的答案。但有些帖子已经做对了。 Java符合2038标准,但不符合10000标准(如果你在Date构造函数中添加一个很长的代表9999之后的东西,它将无法工作并返回一些奇怪的数字),但是,2147483648肯定不是Java日期中允许的最大值类。