Почему программисту на Java нужно беспокоиться об ошибке 2038 года? - PullRequest
12 голосов
/ 30 ноября 2010

Год 2038 Ошибка во всем Интернете, но это похоже на проблему с Unix. Как это повлияет на дату Java?

Ответы [ 5 ]

29 голосов
/ 30 ноября 2010

Что заставляет вас думать, что это делает? Класс Java Date хранит 64-битный long (не 32-битный, как с Y2K38). Он также хранит миллисекунды, что уменьшает диапазон, но незначительно (эквивалентно ~ 10 битам).

В Java у нас есть ошибка 292278994 года.

4 голосов
/ 30 ноября 2010

Я не верю, что это повлияет на класс Java Date для программиста. Он уже использует 64-битные значения. Я вижу, что это проблема, если вы используете хранилище данных, которое все еще использует 32-битные значения. Я не ожидаю увидеть слишком много 32-битных ОС за 27 лет.

1 голос
/ 25 января 2013

Java и время не ограничиваются только классом Date.

Откуда часто берутся даты / время?Часто из System.currentTimeMillis, который является нативным методом .Обычно это не реализовано в Java.Тип возвращаемого значения long, но это мало что значит, поскольку нативный метод может возвращать любое значение, которое просто помещается в long.

Полагаться на наличие 64-битных систем может быть наивно, поскольку очевидно, что существует много встроенных систем, которые являются 32-битными и будут такими.подвержен проблеме 2038 года.

0 голосов
/ 27 марта 2013

Это не совсем ответ. Но некоторые сообщения поняли это правильно. Java совместима с 2038, но не соответствует 10000 (если вы добавите long в конструктор Date, который представляет что-то после 9999, он не будет работать и вернет какое-то странное число), но да, 2147483648 определенно не является максимально допустимым значением в дате Java класс.

0 голосов
/ 01 декабря 2010

Это, вероятно, пережиток прежних дней C, когда типы данных даты были перенесены в 2038 году. Может возникнуть проблема с некоторыми действительно старыми приложениями, но не для Java.Йон.

...