Как получить timestamp в JavaScript: 5 способов с примерами
Каждый разработчик хотя бы раз сталкивался с задачей: нужно сохранить момент времени, сравнить даты или отправить данные на сервер. И тут на помощь приходит timestamp в JavaScript — универсальная метка времени, которую понимают все системы. В этом руководстве я покажу 5 проверенных способов получить timestamp, разберу их плюсы и минусы, а также отвечу на популярные вопросы из Stack Overflow.
Если вы когда-нибудь гуглили "how do I get a timestamp in JavaScript" — вы не одиноки. Тысячи разработчиков ищут этот ответ каждый день. Давайте раз и навсегда разберёмся в теме.
Что такое timestamp и зачем он нужен?
Timestamp (метка времени) — это количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 UTC. Эта дата называется Unix epoch. Зачем это нужно?
- Универсальность: timestamp не зависит от часового пояса — это чистый UTC.
- Удобство хранения: одно число вместо строки даты.
- Сравнение: легко вычислить разницу между двумя моментами времени.
- Совместимость: timestamp понимают все языки программирования и базы данных.
Теперь перейдём к самому интересному — как его получить в JavaScript.
Способ 1: Date.now() — самый быстрый и лаконичный
Это мой любимый метод. Date.now() возвращает timestamp в миллисекундах прямо сейчас. Никаких лишних объектов, никаких конструкторов — просто число.
// Получаем текущий timestamp
const currentTimestamp = Date.now();
console.log(currentTimestamp); // 1712345678901
// Можно сразу использовать для замеров
const start = Date.now();
// ... какой-то код ...
const end = Date.now();
console.log(`Выполнение заняло ${end - start} мс`);
Плюсы:
- Максимальная производительность (нет создания объектов)
- Читаемый и короткий код
- Поддерживается во всех современных браузерах и Node.js
Минусы:
- Возвращает только текущий момент (нельзя задать дату)
Используйте Date.now(), когда вам нужен текущий timestamp в JavaScript без лишних телодвижений.
Способ 2: new Date().getTime() — классика жанра
Этот метод знаком каждому, кто работал с JavaScript больше года. Создаём объект Date и вызываем getTime().
// Получаем timestamp через объект Date
const timestamp = new Date().getTime();
console.log(timestamp); // 1712345678901
// Можно получить timestamp для конкретной даты
const specificDate = new Date('2024-12-31T23:59:59');
const specificTimestamp = specificDate.getTime();
console.log(specificTimestamp); // 1735689599000
Плюсы:
- Можно получить timestamp для произвольной даты
- Обратная совместимость (работает в старых браузерах)
- Интуитивно понятный синтаксис
Минусы:
- Создаёт лишний объект (чуть медленнее, чем Date.now())
Выбирайте new Date().getTime(), когда нужно получить метку времени JavaScript для конкретной даты или работать с разными моментами времени.
Способ 3: +new Date() — хак с унарным плюсом
Мало кто знает, но унарный плюс превращает объект Date в число — его timestamp. Это работает благодаря принудительному преобразованию типов.
// Короткий, но неочевидный способ
const timestamp = +new Date();
console.log(timestamp); // 1712345678901
// Можно даже без скобок
const timestamp2 = +new Date;
console.log(timestamp2); // 1712345678902
Плюсы:
- Очень короткая запись
- Выглядит круто на собеседованиях 😎
Минусы:
- Снижает читаемость кода
- Неочевидно для новичков
- Создаёт объект (как и способ 2)
Я не рекомендую использовать этот метод в продакшн-коде. Но знать о нём полезно — вдруг встретите в чужом проекте.
Способ 4: Date.parse() — для строковых дат
Если у вас есть строка с датой, Date.parse() превратит её в timestamp. Метод анализирует строку и возвращает количество миллисекунд.
// Парсим строковую дату
const timestamp = Date.parse('2024-06-15T10:30:00Z');
console.log(timestamp); // 1718447400000
// Работает с разными форматами
console.log(Date.parse('2024/06/15')); // 1718409600000
console.log(Date.parse('June 15, 2024')); // 1718409600000
Плюсы:
- Удобно для конвертации строк в timestamp
- Понимает много форматов дат
Минусы:
- Разное поведение в старых браузерах (IE < 9)
- Не все строки парсятся корректно (зависит от локали)
Используйте Date.parse(), когда получаете дату из API или базы данных в виде строки и вам нужен unix timestamp JavaScript.
Способ 5: performance.now() — для высокоточных замеров
Этот метод не совсем про timestamp, но о нём часто спрашивают на Stack Overflow. performance.now() возвращает время с момента старта страницы с точностью до микросекунд.
// Высокоточный замер времени
const start = performance.now();
// ... сложные вычисления ...
const end = performance.now();
console.log(`Точное время: ${(end - start).toFixed(3)} мс`);
// Получить timestamp с микросекундами
const preciseNow = Date.now() + (performance.now() % 1);
console.log(preciseNow); // 1712345678901.123
Плюсы:
- Точность до микросекунд (0.001 мс)
- Не зависит от системного времени (нельзя подкрутить)
- Идеально для бенчмарков
Минусы:
- Не является timestamp в классическом смысле
- Доступен только в современных браузерах
Применяйте performance.now() для профилирования кода, а не для хранения меток времени.
Какой способ выбрать? Сравнительная таблица
Чтобы вам было проще ориентироваться, вот краткое рез