JavaScript метод Date.parse()
Определение и применение
JavaScript метод parse() объекта
Date
анализирует строковое представление даты и возвращает количество миллисекунд, прошедших с
00:00:00 1 января 1970 года по UTC, или возвращает значение NaN (англ. Not-a-Number,
"не число"), если строка не распознана или содержит недопустимые значения даты.
Поддержка браузерами
Спецификация: ecma262
Поддерживается во всех основных браузерах с 2015 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 синтаксис
Date.parse(dateString);Значения параметров
| Параметр | Описание |
|---|---|
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
<p>Результат выполнения выводится в консоль.</p>
main.js
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
<p>Результат выполнения выводится в консоль.</p>
main.js
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
<p>Результат выполнения выводится в консоль.</p>
main.js
// Нестандартные строки: результат может зависеть от движка и часового пояса.
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
<p>Результат выполнения выводится в консоль.</p>
main.js
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 недопустим