Как получить эпоху Unix в миллисекундах на Javascript

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для получения времени в миллисекундах, считая с момента начала эпохи Unix, воспользуйтесь методом Date.now():

JS
Скопировать код
let milliseconds = Date.now();

Таким образом, вы сможете зафиксировать текущий момент времени с использованием объекта Date.

Кинга Идем в IT: пошаговый план для смены профессии

Альтернативные способы фиксации текущего времени

Многообразие вариантов делает жизнь интересней. Date.now() — это удобный метод, но существуют и другие способы фиксирования текущего времени, которые будут зависеть от используемой вами версии JavaScript.

Время по стандарту ECMAScript 4

Еще до появления версии ECMAScript 5 можно было использовать конструктор Date в сочетании с методом getTime():

JS
Скопировать код
let milliseconds = new Date().getTime();

Использование метода valueOf()

Если вы хотите сделать решение оригинальнее, попробуйте метод valueOf(), который предоставит такой же результат, как и getTime():

JS
Скопировать код
let milliseconds = new Date().valueOf();

Преобразование определенной даты в миллисекунды

Если требуется преобразовать в миллисекунды не текущий момент времени, а определенную дату:

JS
Скопировать код
let specificTime = new Date('2023-01-01T00:00:00Z').getTime();

Таким образом, вы создадите объект Date, соответствующий 1-му января 2023 года, и получите временную метку для этого момента.

Создание собственной функции преобразования даты в миллисекунды

Для большей гибкости создайте функцию, которая будет преобразовывать любую дату в миллисекунды, исчисляемые от начала эпохи Unix:

JS
Скопировать код
function toEpochMillis(input) {
  return new Date(input).getTime();
}

let epochTimeOfSpecificDate = toEpochMillis('2023-01-01T00:00:00');

Таким образом вы создадите универсальный инструмент, пригодный для различных ситуаций.

Измерение времени с высокой точностью

Для задач, требующих высокой точности измерения времени, используйте performance.now():

JS
Скопировать код
let highPrecisionTime = performance.now();

Однако не забывайте, что performance.now() предоставляет время, отличное от момента начала Unix-эпохи, и используется для измерения производительности.

Визуализация

Представьте бесконечную линию времени, отсчитывающую от начала эпохи Unix:

Markdown
Скопировать код
Unix Эпоха
|🕒----------------------------------> СЕЙЧАС

Каждый момент на этой линии — это миллисекунда:

JS
Скопировать код
let now = Date.now(); // Текущее время в миллисекундах.

Это можно представить так:

Markdown
Скопировать код
🕒 ==> 🕓 ==> 🕔 ==> 🕕 ==> ✨ СЕЙЧАС: `{now}мс`

Продвигайтесь, словно космический марафонец, оценивая каждый мгновенный шаг по линии времени.

Особенности и подводные камни использования временных меток

Процесс получения текущей временной метки кажется простым, но при этом нужно учитывать некоторые особенности:

Изменения во временных зонах

Объект Date зависит от локальной временной зоны, поэтому всегда учитывайте возможные сдвиги временной зоны при работе с временными метками.

Високосные секунды

Unix-метки не учитывают високосные секунды, что важно помнить при синхронизации времени с вращением Земли.

Зависимость от системных часов

Если пользователь изменит время на своем устройстве, Date.now() даст неточную метку. Поэтому рекомендуется использовать временные метки сервера или NTP синхронизацию для точных измерений.

Полезные материалы

  1. Date.now() – JavaScript | MDN — документация по методу получения текущего времени.
  2. datetime – How do I get a timestamp in JavaScript? – Stack Overflow — обсуждение методов работы с временными метками в JavaScript.
  3. Функции конвертации эпохи — инструменты для преобразования Unix-меток времени в JavaScript.
  4. Справочник по объекту Date в JavaScript — полное руководство по объекту Date в JavaScript.
  5. Performance: метод now() – Web APIs | MDN — описание метода performance.now() для измерения производительности в JavaScript.
  6. High Resolution Time — стандарт W3C по высокоточному времени.
  7. Имя процесса | Документация Node.js v21.6.1 — руководство по точному измерению времени в Node.js.