Подтвердить что ты не робот

Когда произойдет сбой даты java?

AFAIK java хранит даты в длинных переменных как миллисекунды. Следовательно, когда-нибудь не будет значения (причина длинного максимума), которая будет соответствовать времени этого момента. Знаете ли вы, когда это произойдет?

4b9b3361

Ответ 1

Достаточно легко узнать:

public class Test {
    public static void main(String[] args) {
        System.out.println(new java.util.Date(Long.MAX_VALUE));
    }
}

Дает вывод (на моем ящике):

Sun Aug 17 07:12:55 GMT 292278994

Вам может потребоваться вычесть бит из Long.MAX_VALUE, чтобы справиться с тем, что ваш часовой пояс переполнен диапазоном длинного, но это даст разумный ориентир:)

Ответ 2

В соответствии с текущим високосного года, среднее число дней в году будет

        365 + 1/4 & минус; 1/100 + 1/400 = 365,245 дней в году

Это означает, что мы в среднем имеем 31556952000 миллисекунд в год.

Длительное значение представляет собой число миллисекунд с Epoch (1 января 1970 г.) и максимальное число, представленное Java long - 2 63 & минус; 1, поэтому следующий расчет

        1970 + (2 63 & minus; 1)/31556952000

показывает, что это представление будет переполняться в году 292278994.


Это может, так как указывает Джон Скит, подтверждается

-> System.out.println(new Date(Long.MAX_VALUE));
Sun Aug 17 08:12:55 CET 292278994