2016-01-19 3 views
-6

Я беспокоился о том, что мое приложение может сломаться, если время когда-либо сбрасывается, но после дальнейшего тестирования я стал меньше беспокоиться об этом.Сбрасывает ли System.currentTimeMillis()?

Около 6:40 A.M., я напечатал значение для себя (что я прочитал с телефона): 1453203669474. Значение, которое я подсчитал для себя, было 24000000. Это заставляет меня думать, что время кумулятивно, но на самом деле это не имеет смысла. Все вопросы и ответы, которые я видел, говорят мне, что выход должен представлять системное время, чего нет.

Я неправильно интерпретирую как System.currentTimeMillis работает?

+2

[Возврат: разница, измеренная в миллисекундах, между текущим временем и полночью, 1 января 1970 г. UTC.] (Https://docs.oracle.com/javase/7/docs/api/java/lang /System.html#currentTimeMillis()), и эта дата вряд ли изменится. –

+0

_ Я беспокоился о том, что мое приложение может сломаться, если время когда-либо сбрасывается. Честно говоря, я думаю, что у всех нас будет много проблем, если это произойдет. – poss

ответ

2

«Текущее время миллиса» - миллисекунды с полуночи 1 января 1970 г. UTC.

Подписанное 64-битное целое число будет охватывать около 292 миллионов лет. https://en.wikipedia.org/wiki/Year_2038_problem

+0

«Подписанное 64-битное целое число ...» Таким образом, это * не * склонно к проблеме 2038, как может предложить ваша ссылка. Тем не менее, эта статья в Википедии интересна для чтения. – morido

+0

Да, 64-бит 'time_t' является одним из решений, перечисленных в статье. Поскольку это секунды с той же эпохи, я разделил 292 миллиарда лет на 1000, чтобы масштабировать ее до миллисекунд. – laalto

+0

Хорошо, 292 миллиона лет может не совсем длиться «пока вселенная не станет тусклой» (цитата из Википедии), но она должна, по-видимому, переживать любое приложение, которое пытается развить ОП. ;) – morido

0

Что он делает?

valueInMIllis = (текущее устройство/системное время) МИНУС (1 января 1970 00: 00: 00,0 UTC)

Единственный путь вы можете попасть в проблему, если кто-то «изменяет текущее системное время и дату какой-либо другой значение "

Возвращает текущее время в миллисекундах с 1 января 1970 года 00: 00: 00.0 UTC. Этот метод всегда возвращает UTC, независимо от часового пояса системы. Это часто называют временем «Unix time» или «epoch time».

Этот метод не должен использоваться для измерения тайм-аутов или других измерений прошедшего времени, так как изменение системного времени может повлиять, в противном случае оно работает просто отлично.

Смежные вопросы