Длина System.currentTimeMillis
Всегда ли System.currentTimeMillis
возвращает фиксированную длину значения. В моих окнах Core2 он возвращает 13-значное длинное значение.
Из своего API:
Возвращает текущее время в миллисекундах. Обратите внимание, что хотя единица времени возвращаемого значения равна миллисекунде, степень детализации зависит от базовой операционной системы и может быть больше. Например, многие операционные системы измеряют время в единицах десятков миллисекунд.
Ответы
Ответ 1
System.currentTimeMillis()
возвращает число миллисекунд с эпохи, т.е. с полуночи UTC 1 января 1970 года.
Вы можете проверить, когда число миллисекунд с эпохи было 13 десятичных цифр в первый раз. Это произошло на
Sep 9 2001 at 01: 46: 40.000 UTC (1'000'000'000'000 мс с эпохи)
Вы также можете проверить, когда число миллисекунд, так как эпоха будет 13 десятичных цифр в последний раз. Это произойдет на
20 ноября 2286 в 17: 46: 39.999 UTC (9'999'999'999'999 мс с эпохи)
Таким образом, между этими двумя датами функция всегда будет возвращать 13 знака десятичной цифры, считая, что машина правильно установила текущее время.
Итак, вы в безопасности с предположением, что возвращаемое значение составляет 13 десятичных цифр больше, чем в течение следующих двух столетий.
Ответ 2
Он возвращает 63-значное двоичное число (это фактически 64-разрядное число со знаком, которое всегда положительно, поэтому верхний бит никогда не устанавливается). Многие из ведущих цифр будут равны нулю. Когда вы конвертируете его в десятичный, любые ведущие нули обычно отбрасываются. Таким образом, число десятичных цифр будет меняться.