JavaScript метод Date.parse()

Определение и применение

JavaScript метод parse() объекта Date анализирует строковое представление даты и возвращает количество миллисекунд, прошедших с 00:00:00 1 января 1970 года по UTC, или возвращает значение NaN (англ. Not-a-Number, "не число"), если строка не распознана или содержит недопустимые значения даты.

Поддержка браузерами

Спецификация: ecma262

Поддерживается во всех основных браузерах с 2015 года.

Показать браузеры
Совместимостьjavascript.builtins.Date.parse
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
parse✓1✓12✓1✓3✓1✓18✓4✓10.1✓1✓1.0✓4.4✓1
ISO 8601 format✓6✓12✓4✓6✓5.1✓18✓4✓10.1✓5✓1.0✓4.4✓5

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

JavaScript
Date.parse(dateString);

Значения параметров

parse(): параметры
Параметр Описание
dateString Строка, представляющая упрощение расширенного формата календарной даты ISO 8601 (могут использоваться и другие форматы, но результаты зависят от реализации). Например, "2019-01-01" (форма только для даты), "2019-01-01T10:00:00" (Форма даты и времени) или "2019-01-01T10:00:00.000+09:00" (Форма даты, времени с миллисекундами и часовым поясом) может быть передана и будет проанализирована. Когда смещение часового пояса отсутствует, формы только даты интерпретируются как время UTC, а формы даты и времени интерпретируются как местное время. Обязательный параметр.

Возвращаемое значение и ограничения

Date.parse() — статический метод: он возвращает число миллисекунд или NaN. Конструктор new Date(dateString) использует те же правила разбора строки, но возвращает объект, а не число. Для моментов до эпохи метка отрицательна.

Надёжнее передавать стандартную строку даты и времени с Z или явным смещением. Дата без времени (2020-01-01) означает UTC, а дата со временем без смещения (2020-01-01T00:00:00) — местное время. Нестандартные строки могут разбираться по-разному в разных движках.

Метод не заменяет строгую проверку календарного ввода: невозможный день месяца может быть нормализован. Для заведомо нераспознаваемой строки получается NaN; проверяйте его через Number.isNaN().

Спецификация

ECMAScript — Date.parse(). Метод входит в стандарт начиная с ECMAScript 1.

Примеры, попробуйте сами

Следующие вызовы возвращают одно значение, первый вызов интерпретирует дату без времени как полночь по UTC, а другие указывают часовой пояс UTC через спецификацию даты ISO (Z и +00:00):

parse() — пример 1

Измените исходные значения и нажмите ▶. Сравните результат с комментариями; местное время определяется часовым поясом браузера.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
console.log(Date.parse('2020-01-01')) // 1577836800000
console.log(Date.parse('2020-01-01T00:00:00.000Z')) // 1577836800000
console.log(Date.parse('2020-01-01T00:00:00.000+00:00')) // 1577836800000

Следующий вызов, который не указывает часовой пояс, будет установлен в 2020-01-01 в 00:00:00 в локальном часовом поясе системы:

parse() — пример 2

Измените исходные значения и нажмите ▶. Сравните результат с комментариями; местное время определяется часовым поясом браузера.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
const timestamp = Date.parse('2020-01-01T00:00:00')
console.log(timestamp) // Зависит от часового пояса: в Москве 1577826000000.
// Обе записи задают местную полночь 1 января 2020 года.
console.log(timestamp === new Date(2020, 0, 1).getTime()) // true

Некоторые другие примеры синтаксического анализа нестандартных строк дат:

parse() — пример 3

Измените исходные значения и нажмите ▶. Сравните результат с комментариями; местное время определяется часовым поясом браузера.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
// Нестандартные строки: результат может зависеть от движка и часового пояса.
console.log(Date.parse('Aug 01, 2000'))
console.log(Date.parse('Tue, 01 Aug 2000 00:00:00 GMT'))
console.log(Date.parse('Tue, 01 Aug 2000 00:00:00'))
console.log(Date.parse('Sat, 01 Jan 2000 00:00:00 GMT'))
console.log(Date.parse('Sat, 01 Jan 2000 00:00:00'))
console.log(Date.parse('Sat, 01 Jan 2000 00:00:00 GMT-0400'))

// Для переносимого кода используйте стандартный формат с явным смещением.
console.log(Date.parse('2000-01-01T00:00:00-04:00')) // 946699200000

Нераспознаваемая строка

Проверяйте результат через Number.isNaN(), прежде чем использовать его как дату.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
const timestamp = Date.parse('not a date')
console.log(timestamp) // NaN
console.log(Number.isNaN(timestamp)) // true
console.log(Date.parse('2020-13-01')) // NaN — месяц 13 недопустим