Learn JavaScript

Date.now() - получение текущего timestamp в JavaScript

Date.now() возвращает текущее время в виде timestamp.

Если говорить просто, это количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 UTC до текущего момента.

Синтаксис

Базовая запись выглядит так:

Date.now()

Аргументы этому методу не нужны.

Что возвращает Date.now()

Метод возвращает число.

const timestamp = Date.now();

console.log(timestamp);
console.log(typeof timestamp); // "number"

Это важно: Date.now() возвращает не объект даты, а именно число миллисекунд.

Что такое timestamp

Timestamp в JavaScript - это число миллисекунд с начала эпохи Unix:

  • 1 января 1970 года
  • 00:00:00
  • UTC

Именно в таком виде JavaScript обычно считает время “внутри”.

Самый простой пример

const now = Date.now();

console.log(now);

Каждый вызов будет возвращать текущее значение времени в миллисекундах.

Чем Date.now() отличается от new Date()

Это очень важное различие.

Date.now() возвращает число:

const now = Date.now();

console.log(typeof now); // "number"

new Date() возвращает объект:

const now = new Date();

console.log(typeof now); // "object"

Если нужен именно timestamp, Date.now() проще и короче.

Date.now() и new Date().getTime()

Эти записи дают почти один и тот же результат:

const a = Date.now();
const b = new Date().getTime();

console.log(Math.abs(a - b) < 50); // true

Разница в том, что:

  • Date.now() сразу возвращает число
  • new Date().getTime() сначала создаёт объект даты, а потом получает из него timestamp

Поэтому, если вам нужен только timestamp, Date.now() обычно удобнее.

Где это полезно

Date.now() особенно удобен, когда:

  • нужно сохранить момент времени
  • хочется измерить, сколько прошло времени
  • надо сравнить “до” и “после”
  • нужен timestamp для записи в объект, базу или localStorage

Пример:

const user = {
  name: "Анна",
  createdAt: Date.now(),
};

console.log(user.createdAt);

Измерение времени выполнения

Один из самых частых сценариев - измерить, сколько заняла операция.

const start = Date.now();

for (let i = 0; i < 1000000; i++) {
  // какая-то работа
}

const end = Date.now();

console.log(end - start); // например, 5

Разница между end и start покажет количество миллисекунд.

Сравнение моментов времени

Так как Date.now() возвращает число, его удобно сравнивать напрямую.

const start = Date.now();

setTimeout(() => {
  const end = Date.now();
  console.log(end > start); // true
}, 1000);

Такой подход часто проще, чем сравнение объектов Date.

Как превратить timestamp обратно в дату

Если у вас уже есть число от Date.now(), его можно передать в new Date().

const timestamp = Date.now();
const date = new Date(timestamp);

console.log(date);

То есть:

  • Date.now() даёт число
  • new Date(timestamp) превращает это число обратно в объект даты

Date.now() не форматирует дату

Иногда ожидают, что метод вернёт красивую дату или строку, но это не так.

console.log(Date.now());
// 1760000000000

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

const date = new Date(Date.now());

console.log(date.toISOString());

Date.now() и точность

Метод возвращает время в миллисекундах.

Для большинства обычных задач этого достаточно:

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

Но важно понимать, что это не специальный инструмент для сверхточных замеров производительности.

Когда это удобнее, чем new Date()

Date.now() обычно лучше выбирать, когда:

  • нужна только метка времени
  • не нужны методы объекта Date
  • нужно быстро сравнить числа
  • хочется записать время в простом числовом виде

Пример:

const expiresAt = Date.now() + 60 * 60 * 1000;

console.log(expiresAt);

Здесь мы получаем время “через один час” в миллисекундах.

Частые ошибки

Ожидать, что Date.now() вернёт объект даты

const now = Date.now();

console.log(typeof now); // "number"

Это число, а не объект Date.

Путать Date.now() и new Date()

Если нужно вызвать методы вроде getFullYear() или toISOString(), одного Date.now() недостаточно.

Думать, что результат в секундах, а не в миллисекундах

const timestamp = Date.now();

Здесь единица измерения - миллисекунды.

Пытаться форматировать timestamp как готовую дату без преобразования

Если нужен читаемый вид, сначала нужно сделать:

const date = new Date(Date.now());

Использовать Date.now() там, где нужен именно объект даты

Если вам нужны методы объекта Date, сразу создавайте new Date().

Быстрая памятка

  • Date.now() возвращает текущий timestamp
  • результатом будет число
  • единица измерения - миллисекунды
  • Date.now() не создаёт объект Date
  • Date.now() похож на new Date().getTime(), но короче
  • timestamp от Date.now() можно передать в new Date()

Коротко

Date.now() в JavaScript нужен, чтобы быстро получить текущее время в миллисекундах. Главное, что стоит запомнить: этот метод возвращает число, а не объект даты, поэтому особенно удобен для timestamp, сравнений и простых замеров времени.