← Назад к вопросам

Вернет ли Date.now такой же объект как и new Date

1.8 Middle🔥 201 комментариев
#JavaScript Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Разница между Date.now() и new Date()

Это два совершенно разных способа работы с датой и временем в JavaScript, которые часто путают начинающие разработчики. Рассмотрим подробно.

Date.now() - число (примитив)

Назначение: получить текущее время в миллисекундах с начала Unix эпохи (1 января 1970 года).

Возвращаемый тип: number (примитив).

Характеристики:

  • Возвращает целое число
  • Легче для сравнения и вычислений
  • Меньше памяти
  • Быстрее в обработке
const now = Date.now();
console.log(now); // 1743667200000 (число)
console.log(typeof now); // "number"

// Пример использования
const startTime = Date.now();
// ... какой-то код ...
const endTime = Date.now();
const duration = endTime - startTime; // Просто вычитание

new Date() - объект

Назначение: создать объект Date с методами для работы с датой/временем.

Возвращаемый тип: Object (экземпляр Date).

Характеристики:

  • Возвращает полнофункциональный объект
  • Имеет методы для получения компонентов (год, месяц, день и т.д.)
  • Занимает больше памяти
  • Медленнее в обработке
const date = new Date();
console.log(date); // Tue Apr 02 2026 12:00:00 GMT+0000
console.log(typeof date); // "object"

// Методы объекта Date
date.getFullYear(); // 2026
date.getMonth(); // 3 (апрель, начиная с 0)
date.getDate(); // 2
date.getHours(); // 12
date.getMinutes(); // 0

Сравнение

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

console.log(timestamp); // 1743667200000
console.log(dateObj); // Tue Apr 02 2026 12:00:00 GMT+0000

console.log(timestamp === dateObj); // false - разные типы!
console.log(timestamp === dateObj.getTime()); // true - одно и то же значение

Связь между ними

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

const timestamp = Date.now();
const date = new Date();
const dateValue = date.getTime(); // Вернет числовое значение

// Они представляют один и тот же момент времени, но разные типы
console.log(timestamp === dateValue); // true (если вызваны в один момент)

// Можно создать Date с определенным timestamp
const customDate = new Date(timestamp);
console.log(customDate.getTime() === timestamp); // true

Когда использовать что

Используй Date.now():

  • Измерение времени выполнения - для профилирования
  • Сравнение временных меток - вычисление разницы
  • Хранение в БД - экономия памяти
  • Быстрые операции - когда нужна скорость
// Замер производительности
const start = Date.now();
performExpensiveOperation();
const end = Date.now();
console.log(`Операция заняла ${end - start}ms`);

Используй new Date():

  • Форматирование даты - отображение пользователю
  • Извлечение компонентов - год, месяц, день отдельно
  • Сложные операции - добавление дней, месяцев
  • Локализация - работа с разными часовыми поясами
// Форматирование даты
const date = new Date();
const formatted = date.toLocaleDateString(ru-RU);
console.log(formatted); // "02.04.2026"

// Добавление дня
const tomorrow = new Date(date);
tomorrow.setDate(tomorrow.getDate() + 1);

Производительность

// Date.now() - очень быстро
for (let i = 0; i < 1000000; i++) {
  Date.now(); // Просто чтение числа
}

// new Date() - медленнее
for (let i = 0; i < 1000000; i++) {
  new Date(); // Создание нового объекта каждый раз
}

Итоговая таблица

АспектDate.now()new Date()
Типnumberobject
ПамятьМинимумБольше
СкоростьБыстроМедленнее
МетодыНетМного
ИспользованиеTimestampРабота с датой

Вывод

Нет, они не возвращают одинаковый объект. Date.now() возвращает число (примитив), а new Date() возвращает объект Date. Они представляют один и тот же момент времени, но имеют совершенно разные типы данных и API. Выбирай в зависимости от того, нужна ли тебе скорость и простота (Date.now()) или полнофункциональная работа с датой (new Date()).

Вернет ли Date.now такой же объект как и new Date | PrepBro