Learn JavaScript

Date.parse() - преобразование строки даты в timestamp в JavaScript

Date.parse() превращает строку даты в timestamp.

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

Синтаксис

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

Date.parse(dateString)

Где:

  • dateString - строка, которую JavaScript должен попытаться распознать как дату

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

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

const timestamp = Date.parse("2025-01-15T10:30:00Z");

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

Если строка не распознаётся, результатом будет NaN.

console.log(Date.parse("not-a-date")); // NaN

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

Пример с ISO-строкой

Самый надёжный вариант - использовать ISO-формат.

const timestamp = Date.parse("2025-01-15T10:30:00Z");

console.log(timestamp);

Такую строку JavaScript обычно понимает предсказуемо.

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

Date.parse() возвращает timestamp, и его можно передать в new Date().

const timestamp = Date.parse("2025-01-15T10:30:00Z");
const date = new Date(timestamp);

console.log(date.toISOString()); // "2025-01-15T10:30:00.000Z"

То есть:

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

Date.parse() и new Date() со строкой

Эти записи очень близки по смыслу:

const a = Date.parse("2025-01-15T10:30:00Z");
const b = new Date("2025-01-15T10:30:00Z").getTime();

console.log(a === b); // true

Разница такая:

  • Date.parse() сразу возвращает timestamp
  • new Date(string) создаёт объект даты

Если вам нужен только timestamp, Date.parse() может быть удобнее.

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

Что такое timestamp

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

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

Именно в таком числовом виде JavaScript часто хранит и сравнивает моменты времени.

Пример со строкой без времени

Строка вроде "2025-01-15" тоже может быть разобрана:

const timestamp = Date.parse("2025-01-15");

console.log(timestamp);

Но важно помнить, что при дальнейшем выводе через new Date(timestamp) вы можете увидеть локальное время с учётом часового пояса пользователя.

Из-за этого с датами без времени нужно быть особенно внимательным.

Невалидная строка даёт NaN

Если строка не подходит, метод не создаёт дату и не возвращает объект ошибки как результат.

Он просто даёт NaN.

const result = Date.parse("abc");

console.log(result); // NaN
console.log(Number.isNaN(result)); // true

Такой результат обязательно стоит проверять, если строка приходит извне.

Форматы строк лучше не брать “на удачу”

Date.parse() может по-разному работать со строками, которые не являются нормальным ISO-форматом.

Например, такие варианты лучше не считать надёжными:

Date.parse("15/01/2025");
Date.parse("01-15-2025");

Подобные строки могут разбираться по-разному или вообще не распознаваться.

Для практики безопаснее использовать формат вроде:

"2025-01-15T10:30:00Z"

Когда это полезно

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

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

Пример:

const start = Date.parse("2025-01-10T00:00:00Z");
const end = Date.parse("2025-01-15T00:00:00Z");

console.log(end > start); // true

Проверка строки даты

Иногда Date.parse() используют просто как способ понять, валидна строка или нет.

function isValidDateString(value) {
  return !Number.isNaN(Date.parse(value));
}

console.log(isValidDateString("2025-01-15T10:30:00Z")); // true
console.log(isValidDateString("not-a-date")); // false

Для базовых задач это вполне рабочий вариант.

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

Метод только пытается разобрать строку и вернуть timestamp.

Он не выводит красивую дату и не создаёт строку в нужном формате.

const timestamp = Date.parse("2025-01-15T10:30:00Z");

console.log(timestamp);

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

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

Думать, что Date.parse() возвращает объект Date

const result = Date.parse("2025-01-15T10:30:00Z");

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

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

Забывать проверять NaN

const result = Date.parse("not-a-date");

Если строка может быть некорректной, полезно проверять Number.isNaN(result).

Использовать нестабильные форматы строки

Date.parse("15/01/2025");

Такие форматы лучше не считать надёжными.

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

Если вам нужен объект с методами вроде getFullYear() или toISOString(), одного Date.parse() недостаточно.

Путать миллисекунды и секунды

Результат Date.parse() измеряется именно в миллисекундах.

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

  • Date.parse() принимает строку даты
  • результатом будет timestamp в миллисекундах или NaN
  • Date.parse() не возвращает объект Date
  • Date.parse(string) близок по смыслу к new Date(string).getTime()
  • безопаснее всего использовать ISO-формат строки
  • невалидная строка даёт NaN

Коротко

Date.parse() в JavaScript нужен, чтобы превратить строку даты в timestamp. Главное, что стоит запомнить: метод возвращает число миллисекунд или NaN, поэтому особенно полезен для проверок и сравнений, но для строк лучше придерживаться ISO-формата.