--- title: Date.parse() slug: Web/JavaScript/Reference/Global_Objects/Date/parse tags: - Date - JavaScript - Method - Reference translation_of: Web/JavaScript/Reference/Global_Objects/Date/parse ---
Метод Date.parse()
разбирает строковое представление даты и возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.
Прямой вызов:
Date.parse(dateString)
Неявный вызов:
new Date(dateString)
dateString
Метод parse()
принимает строку с датой (например, "Dec 25, 1995"
) и возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC. Этот метод полезен для установки значения даты из строкового значения, например, в сочетании с методом {{jsxref("Date.prototype.setTime()", "setTime()")}} о объектом {{jsxref("Global_Objects/Date", "Date")}}.
По данному строковому представлению времени метод parse()
возвращает значение времени. Он принимает синтаксис даты из RFC2822 / IETF (RFC2822 раздел 3.3 — на английском, на русском), например, "Mon, 25 Dec 1995 13:30:00 GMT"
. Он понимает аббревиатуры континентальных часовых поясов США, но для общего пользования используйте смещение часовых поясов, например, "Mon, 25 Dec 1995 13:30:00 +0430"
(4 часа 30 минут к востоку от Гринвичского меридиана). Если часовой пояс не определён и строка является форматом ISO, распозначаемым ES5, предполагается, что часовым поясом является UTC. GMT и UTC считаются эквивалентными. Местный часовой пояс используется для интерпретации аргумента в формате RFC2822 из раздела 3.3 (на английском, на русском) (или в любом другом формате, не распознаваемым как ISO 8601 в ES5), если он не содержит информации о часовом поясе.
Строка с датой и временем может быть в формате ISO 8601. Например, могут быть переданы и разобраны строки "2011-10-10"
(только дата) или "2011-10-10T14:48:00"
(дата и время). Для интерпретации аргументов в формате ISO 8601, не содержащих информацию о часовом поясе, используется часовой пояс UTC.
Хотя во время разбора строки с датой и используется спецификатор часового пояса, возвращаемое значение всегда содержит количество миллисекунд между 1 января 1970 года 00:00:00 по UTC и моментом времени, представленным аргументом.
Поскольку метод parse()
является статическим методом объекта {{jsxref("Global_Objects/Date", "Date")}}, вы всегда должны использовать его как Date.parse()
.
Для строки даты "March 7, 2014"
, метод parse()
будет предполагать местный часовой пояс, но если строка дана в формате ISO, например "2014-03-07"
, он будет предполагать, что часовой пояс равен UTC. Поэтому объекты {{jsxref("Global_Objects/Date", "Date")}}, созданные из этих строк, если в системе местный часовой пояс не равен UTC, будут представлять разные моменты времени. Это значит, что две строки с датами, которые выглядят одинаковыми, могут дать два разных значения в зависимости от формата преобразуемой строки.
В спецификации ECMAScript говорится: если строка не соответствует стандартному формату, функция может откатиться к любой зависимой от реализации эвристике, либо к зависимому от реализации алгоритму разбора. Нераспознанные строки, либо даты, содержащие недопустимые значения элементов в строках формата ISO, должны при вызове Date.parse()
возвращать {{jsxref("Global_Objects/NaN", "NaN")}}.
Однако, недопустимые значения в строке даты, не распознанные как формат ISO, как определено ES5 могут возвращать, а могут и не возвращать {{jsxref("Global_Objects/NaN", "NaN")}} в качестве результата, в зависимости от браузера и предоставленных значений, например:
// Строка не в формате ISO с недопустимыми значениями даты new Date('23/25/2014');
будет рассматриваться как местная дата 25 ноября 2015 года в Firefox 30 и как недопустимая дата в Safari 7. Однако, если строка распознана как строка в формате ISO и она содержит недопустимые значения, метод вернёт {{jsxref("Global_Objects/NaN", "NaN")}} во всех браузерах, совместимых с ES5:
// Строка в формате ISO с недопустимыми значениями даты new Date('2014-25-23').toISOString(); // вернёт "RangeError: invalid date" во всех браузерах, совместимых с ES5
Реализация эвристики SpiderMonkey может быть найдена в файле jsdate.cpp
. Строка "10 06 2014"
является примером не подходящей под формат ISO и поэтому её разбор откатывается на пользовательскую подпрограмму. Так же смотрите эту грубую схему работы разбора строки.
new Date('10 06 2014');
будет рассматриваться как местная дата 6 октября 2014 года, а не 10 июня 2014 года. Другие примеры:
new Date('foo-bar 2014').toString(); // вернёт: "Invalid Date" Date.parse('foo-bar 2014'); // вернёт: NaN
Date.parse()
Если переменная IPOdate
содержит существующий объект {{jsxref("Global_Objects/Date", "Date")}}, она может быть установлена в 9 августа 1995 года (по местному времени) следующим способом:
IPOdate.setTime(Date.parse('Aug 9, 1995'));
Ещё несколько примеров разбора нестандартных строк с датами:
Date.parse('Aug 9, 1995');
Вернёт 807937200000
в часовом поясе GMT-0300, и другие значения в других часовых поясах, так как поскольку строка не определяет часовой пояс и не находится в формате ISO, то часовой пояс по умолчанию равен местному часовому поясу.
Date.parse('Wed, 09 Aug 1995 00:00:00 GMT');
Вернёт 807926400000
вне зависимости от местного часового пояса, поскольку предоставлен спецификатор GMT (всемирное координированное время).
Date.parse('Wed, 09 Aug 1995 00:00:00');
Вернёт 807937200000
в часовом поясе GMT-0300, и другие значения в других часовых поясах, так как поскольку строка не определяет часовой пояс и не находится в формате ISO, то часовой пояс по умолчанию равен местному часовому поясу.
Date.parse('Thu, 01 Jan 1970 00:00:00 GMT');
Вернёт 0
вне зависимости от местного часового пояса, поскольку предоставлен спецификатор GMT (всемирное координированное время).
Date.parse('Thu, 01 Jan 1970 00:00:00');
Вернёт 14400000
в часовом поясе GMT-0400, и другие значения в других часовых поясах, так как поскольку строка не определяет часовой пояс и не находится в формате ISO, то используется местный часовой пояс.
Date.parse('Thu, 01 Jan 1970 00:00:00 GMT-0400');
Вернёт 14400000
вне зависимости от местного часового пояса, поскольку предоставлен спецификатор GMT (всемирное координированное время).
Спецификация | Статус | Комментарии |
---|---|---|
ECMAScript 1-е издание. | Стандарт | Изначальное определение. Реализована в JavaScript 1.0. |
{{SpecName('ES5.1', '#sec-15.9.4.2', 'Date.parse')}} | {{Spec2('ES5.1')}} | Добавлен формат ISO 8601. |
{{SpecName('ES6', '#sec-date.parse', 'Date.parse')}} | {{Spec2('ES6')}} |
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
Формат ISO 8601 | {{CompatVersionUnknown}} | {{CompatGeckodesktop("2.0")}} | {{CompatIE("9")}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Базовая поддержка | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
Формат ISO 8601 | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |