2038年问题已经铺天盖地,但似乎这只是Unix的问题。那么这将如何影响Java日期?
2038年问题已经铺天盖地,但似乎这只是Unix的问题。那么这将如何影响Java日期?
您为什么认为这样呢?Java的 Date
类存储了64位的 long
(而不是像Y2K38一样32位)。它还存储毫秒数,这会减少范围,但只有轻微的影响(相当于约10位)。
在Java中,我们会遇到292278994年的问题。
java.util.Date
,而不涉及任何 time_t
相关的内容。 - Matthew FlaschenJava和时间不仅局限于Date类。
日期/时间通常来自哪里?通常来自System.currentTimeMillis,它是本地方法。它通常不是用Java实现的。返回类型是long,但这意味着很少,因为本地方法可以返回任何适合长整型的值。
这将完全取决于操作系统及其对JRE的实现。
依赖64位系统的存在可能是幼稚的,因为显然有许多嵌入式系统是32位的,并且将继续存在。
总的来说,Java面临2038问题。
我认为这不会对Java Date类造成影响,至少对程序员而言是这样。因为它已经使用了64位值。如果你正在使用仍在使用32位值的数据存储,则可能会出现问题。我不希望在27年内看到太多32位操作系统。
这并不是一个真正的答案。但是有些帖子已经说得很对了。Java是2038兼容的,但不是10000兼容的(如果您将一个长整型放入表示9999年之后的日期构造函数中,它将无法工作并返回一些奇怪的数字),但是,2147483648绝对不是Java Date类中允许的最大值。
这可能是旧的C语言时代遗留下来的问题,当日期数据类型在2038年翻转时会出现问题。对于Java而言,这可能会影响一些非常老旧的应用程序,但并不是什么大问题。呵呵。