Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Java程序员应该关心2038年的bug?_Java_Unix_Date_Year2038 - Fatal编程技术网

为什么Java程序员应该关心2038年的bug?

为什么Java程序员应该关心2038年的bug?,java,unix,date,year2038,Java,Unix,Date,Year2038,2038年的错误遍布网络,但这似乎是一个unix问题。这将如何影响java Date?您怎么会认为它会影响java Date?Java的Date类存储64位长(而不是32位,与Y2K38一样)。它还存储毫秒,这会减小范围,但只会略微减小(相当于~10位) 在Java中,我们有292278994年的bug。我不相信它会影响Java Date类,因为程序员关心这个问题。它已经在使用64位值。如果您使用的数据存储仍然使用32位值,我可以看出这是一个问题。我不希望在27年内看到太多的32位操作系统。这可

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

您怎么会认为它会影响java Date?Java的
Date
类存储64位
(而不是32位,与Y2K38一样)。它还存储毫秒,这会减小范围,但只会略微减小(相当于~10位)


在Java中,我们有292278994年的bug。

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

这可能是2038年日期数据类型转换时旧C时代的遗留问题。对于一些真正的旧的应用程序来说可能是个问题,但对于Java来说不是。哈欠。

Java和时间不仅仅限于Date类

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

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

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


一般来说,Java会遇到2038问题。

这并不是一个真正的答案。但有些帖子做对了。Java兼容2038,但不兼容10000(如果在表示9999之后的内容的日期构造函数中输入long,它将不起作用并返回一些奇怪的数字),但是是的,2147483648绝对不是Java的Date类中允许的最大值。

是否会有另一部罗兰·艾默里奇的电影?不应该打扰任何人。。我们都知道,地球将在2012年结束。写一些很酷的东西,而不是为什么我现在应该担心它,当我能在2037年得到每天10万英镑的报酬来修复它时?@skaffmann在2037年,10万英镑可能会给你一个汉堡包和薯条:-)你仍然想在2038年使用Java吗?这将是不合理的…+1-但Unix上的Java有时确实需要与底层O/S讨论日期。这不太可能是一个真正的问题(直到2038年),但可能值得一提。@Steve,没错,但我认为问题是关于
Java.util.Date
,没有任何涉及时间的东西。Java应用程序首先是如何获得时间的?Java可能能够很好地处理日期,但GIGO可能仍然是一个问题。@BCS-是的,但当前日期在2038年之前不会是2038年。那么现在,问题是什么?同样,对于文件日期,除非您与时间旅行者共享文件。所以,在2038年之前,这不太可能是一个真正的问题。@Steve314:我过去(现在)同意你的观点。这还没有得到解决。我想一些嵌入式系统可能仍然使用32位。我很确定28年后,甚至嵌入式系统也不会使用32位-bit@Goran-洗衣机可能仍然使用8位,就像现在一样。我不确定衣服或污垢在未来28年会有多大变化。但如果确实发生了变化(可能是数字版权管理,以防止您使用未经授权的清洁剂),那么可能需要一个32位Unix机箱。上面的答案表明,这是一个比这更微妙的问题,Java也面临着这个问题,因为对于许多常见路径,它与底层的O/S并没有完全隔离。