Java System. Current Time Millis Метод
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает текущее время в миллисекундах.
[Android.Runtime.Register("currentTimeMillis", "()J", "")] public static long CurrentTimeMillis ();
[] static member CurrentTimeMillis : unit -> int64
Возвращаемое значение
разница в миллисекундах между текущим временем и полночью, 1 января 1970 года в формате UTC.
Комментарии
Возвращает текущее время в миллисекундах. Обратите внимание, что, хотя единица времени возвращаемого значения составляет миллисекунды, степень детализации значения зависит от базовой операционной системы и может быть больше. Например, многие операционные системы измеряют время в десятках миллисекундах.
См. описание класса Date , чтобы обсудить небольшие расхождения, которые могут возникнуть между «компьютерным временем» и универсальным временем в формате UTC.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.
System.currenttimemillis выводит некорректно часы
Проблема в том, что часы отстают на 5 часов. Что я не так делаю? Через календарь не надо, мне именно с этим надо разобраться. Я так понял это из — за часового пояса?
Отслеживать
51.3k 87 87 золотых знаков 267 267 серебряных знаков 505 505 бронзовых знаков
задан 30 авг 2016 в 19:23
9 1 1 бронзовый знак
А вы вообще знаете, что возвращает System.currentTimeMillis() ?
30 авг 2016 в 19:32
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Если посмотреть в описание метода то увидим следующее:
- @return the difference, measured in milliseconds, between
- the current time and midnight, January 1, 1970 UTC.
т.е. timestamp приходит в часовом поясе UTC+0, из за этого и получается расхождения с местным временем
Отслеживать
ответ дан 30 авг 2016 в 19:42
15k 1 1 золотой знак 22 22 серебряных знака 41 41 бронзовый знак
Всё-таки, currentTimeMillis возвращает количество миллисекунд, это просто число, оно не имеет часового пояса. Просто момент времени, когда начался отсчёт этого числа, принято выражать в UTC. Легко показать, что это также количество миллисекунд, прошедших с 1 января 1970 03:00:00 UTC+3, но это не заставит currentTimeMillis «быть» в часовом поясе UTC+3.
Учебное задание: отображение текущего времени

Задача заключается в разработке программы, которое показывает текущее время в GMT (Greenwich Mean Time, т.е. среднее время по Гринвичу) в формате часы:минуты:секунды, т.е. 13:19:8.
Метод currentTimeMillis в классе System возвращает текущее время в миллисекундах, истёкшее с полуночи 1 января 1970 GMT, как показано на следующем рисунке:

Это время известно как Эра UNIX (UNIX epoch). Эра – это точка, когда началось время, а 1970 – это год, когда официально представлена операционная система UNIX.
Вы можете использовать этот метод для получения текущего времени, а затем вычисления текущих секунд, минут, часов следующим образом:
- Получить общее число миллисекунд с полуночи 1 января 1970 в totalMilliseconds вызовом System.currentTimeMillis() (к примеру, 1203183068328 миллесекунд).
- Получить общее число секунд totalSeconds разделив totalMilliseconds на 1000 (например, 1203183068328 миллисекунд / 1000 = 1203183068 секунд).
- Вычислить текущую секунд из totalSeconds % 60 (например, 1203183068 секунд % 60 = 8, что будет текущей секундой).
- Получить общее количество минут totalMinutes разделив totalSeconds на 60 (к примеру, 1203183068 секунд / 60 = 20053051 минут).
- Вычислить текущее время из totalMinutes % 60 (к примеру, 20053051 минут % 60 = 31, это будет текущая минута).
- Получить общее количество часов totalHours разделив totalMinutes на 60 (например, 20053051 минут / 60 = 334217 часов).
- Вычислить текущий час из totalHours % 24 (например, 334217 часов % 24 = 17, это будет текущий час).
public class ShowCurrentTime < public static void main(String[] args) < // Получить общее количество миллисекунд с полночи 1 января 1970 long totalMilliseconds = System.currentTimeMillis(); // Получить общее количество миллисекунд с полночи 1 января 1970 long totalSeconds = totalMilliseconds / 1000; // Рассчитать текущую секунду этой минуты и этого часа long currentSecond = totalSeconds % 60; // Получить общее количество минут long totalMinutes = totalSeconds / 60; // Рассчитать текущую минуту этого часа long currentMinute = totalMinutes % 60; // Получить общее количество часов long totalHours = totalMinutes / 60; // Рассчитать текущий час long currentHour = totalHours % 24; // Отобразить результаты System.out.println("Текущее время " + currentHour + ":" + currentMinute + ":" + currentSecond + " GMT"); >>

Строка 4 вызывает System.currentTimeMillis() для получения текущего времени в миллисекундах, как величину long. Поэтому все переменные в этой программе объявлены как тип long. Секунды, минуты и часы извлекаются из текущего времени используя операторы / и % (строки 6–22).
Проверь себя:
- Как вы получаете текущую секунду, минуту и час?
Работа с ошибками в Java. Дата и время
Выявление ошибок — одна из наиболее трудоемких частей процесса разработки на Джава. Этот процесс несколько упрощается с помощью трассировки стека. Stack Trace позволяет точно отслеживать, где именно в вашем проекте возникла ошибка либо исключение (exception).

NullPointerException
Исключения, которые возникают из-за null-значений (NullPointerException), нередко появляются, когда мы пытаемся вызвать метод у несуществующего объекта.
Возьмем для примера следующий код:

Дата и время
System.currentTimeMillis либо System.nanoTime?
В Java существуют 2 стандартных способа проведения операций со временем, причем не всегда понятно, какой лучше выбрать.
Начнем с метода System.currentTimeMillis() . Он возвращает в формате Long текущее количество миллисекунд с начала эры Unix. Точность находится в пределах от 1 до 15 тысячных долей секунды, что зависит от системы.

Что касается метода System.nanoTime() , то он имеет точность до одной наносекунды, возвращая текущее значение наиболее точного и доступного системе таймера.

Какой тут можно сделать вывод? Метод System.currentTimeMillis() предпочтительнее использовать при отображении и синхронизации абсолютного времени, а метод System.nanoTime() больше подходит для измерения относительных интервалов времени.
Валидация даты из строки
Когда надо достать объект Date из обычной строки, можно воспользоваться небольшим утилитным классом, приведенным ниже. Этот класс позаботится обо всех сложностях как валидации, так и преобразования строки в объект Date.

А вот пример использования:


Напутствие: несколько слов о чистоте кода
В крупных проектах первоочередное значение имеет не создание нового кода, а поддержка кода, который уже существует. А значит это следующее: очень важно правильно организовать код с самого начала. Поэтому, разрабатывая новое приложение, всегда помните о 3-х главных принципах чистого и поддерживаемого кода: 1) используйте паттерны проектирования; 2) не забывайте про принципы SOLID; 3) помните про правило 10-50-500 (в одном пакете не должно быть более 10 классов; каждый метод должен быть короче 50 строк, а каждый класс — короче 500 строк кода).
На этом все, удачной вам разработки!