Как получить эпоху Unix в миллисекундах на Javascript
Быстрый ответ
Для получения времени в миллисекундах, считая с момента начала эпохи Unix, воспользуйтесь методом Date.now()
:
let milliseconds = Date.now();
Таким образом, вы сможете зафиксировать текущий момент времени с использованием объекта Date
.
Альтернативные способы фиксации текущего времени
Многообразие вариантов делает жизнь интересней. Date.now()
— это удобный метод, но существуют и другие способы фиксирования текущего времени, которые будут зависеть от используемой вами версии JavaScript.
Время по стандарту ECMAScript 4
Еще до появления версии ECMAScript 5 можно было использовать конструктор Date
в сочетании с методом getTime()
:
let milliseconds = new Date().getTime();
Использование метода valueOf()
Если вы хотите сделать решение оригинальнее, попробуйте метод valueOf()
, который предоставит такой же результат, как и getTime()
:
let milliseconds = new Date().valueOf();
Преобразование определенной даты в миллисекунды
Если требуется преобразовать в миллисекунды не текущий момент времени, а определенную дату:
let specificTime = new Date('2023-01-01T00:00:00Z').getTime();
Таким образом, вы создадите объект Date
, соответствующий 1-му января 2023 года, и получите временную метку для этого момента.
Создание собственной функции преобразования даты в миллисекунды
Для большей гибкости создайте функцию, которая будет преобразовывать любую дату в миллисекунды, исчисляемые от начала эпохи Unix:
function toEpochMillis(input) {
return new Date(input).getTime();
}
let epochTimeOfSpecificDate = toEpochMillis('2023-01-01T00:00:00');
Таким образом вы создадите универсальный инструмент, пригодный для различных ситуаций.
Измерение времени с высокой точностью
Для задач, требующих высокой точности измерения времени, используйте performance.now()
:
let highPrecisionTime = performance.now();
Однако не забывайте, что performance.now()
предоставляет время, отличное от момента начала Unix-эпохи, и используется для измерения производительности.
Визуализация
Представьте бесконечную линию времени, отсчитывающую от начала эпохи Unix:
Unix Эпоха
|🕒----------------------------------> СЕЙЧАС
Каждый момент на этой линии — это миллисекунда:
let now = Date.now(); // Текущее время в миллисекундах.
Это можно представить так:
🕒 ==> 🕓 ==> 🕔 ==> 🕕 ==> ✨ СЕЙЧАС: `{now}мс`
Продвигайтесь, словно космический марафонец, оценивая каждый мгновенный шаг по линии времени.
Особенности и подводные камни использования временных меток
Процесс получения текущей временной метки кажется простым, но при этом нужно учитывать некоторые особенности:
Изменения во временных зонах
Объект Date
зависит от локальной временной зоны, поэтому всегда учитывайте возможные сдвиги временной зоны при работе с временными метками.
Високосные секунды
Unix-метки не учитывают високосные секунды, что важно помнить при синхронизации времени с вращением Земли.
Зависимость от системных часов
Если пользователь изменит время на своем устройстве, Date.now()
даст неточную метку. Поэтому рекомендуется использовать временные метки сервера или NTP синхронизацию для точных измерений.
Полезные материалы
- Date.now() – JavaScript | MDN — документация по методу получения текущего времени.
- datetime – How do I get a timestamp in JavaScript? – Stack Overflow — обсуждение методов работы с временными метками в JavaScript.
- Функции конвертации эпохи — инструменты для преобразования Unix-меток времени в JavaScript.
- Справочник по объекту Date в JavaScript — полное руководство по объекту Date в JavaScript.
- Performance: метод now() – Web APIs | MDN — описание метода performance.now() для измерения производительности в JavaScript.
- High Resolution Time — стандарт W3C по высокоточному времени.
- Имя процесса | Документация Node.js v21.6.1 — руководство по точному измерению времени в Node.js.