AFAIK java хранит даты в длинных переменных как миллисекунды. Следовательно, когда-нибудь не будет значения (причина длинного максимума), которая будет соответствовать времени этого момента. Знаете ли вы, когда это произойдет?
Когда произойдет сбой даты java?
Ответ 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