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:00UTC
Именно в таком виде 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()не создаёт объектDateDate.now()похож наnew Date().getTime(), но короче- timestamp от
Date.now()можно передать вnew Date()
Коротко
Date.now() в JavaScript нужен, чтобы быстро получить текущее время в миллисекундах. Главное, что стоит запомнить: этот метод возвращает число, а не объект даты, поэтому особенно удобен для timestamp, сравнений и простых замеров времени.