JavaScript, MDN

За цим рядковим уявленням часу метод 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 у ECMAScript 5

Рядок з датою та часом може бути у форматі ISO 8601. Наприклад, можуть бути передані та розібрані рядки "2011-10-10" (тільки дата) або "2011-10-10T14:48:00" (дата та час). Для інтерпретації аргументів у форматі ISO 8601, що не містять інформацію про часовий пояс, використовується часовий пояс UTC (зверніть увагу, що в чернетці ECMAScript 6-го видання такі дата та час трактуються як місцевий час, а не час UTC).

Оскільки метод parse() є статичним методом об'єкта Date, ви завжди повинні використовувати його як Date.parse().

Відмінності у передбачуваному часовому поясі

Для рядка дати "March 7, 2014" , метод parse() припускатиме місцевий часовий пояс, але якщо рядок дано у форматі ISO, наприклад "2014-03-07" , він припускатиме, що часовий пояс дорівнює UTC. Тому об'єкти Date створені з цих рядків, якщо в системімісцевий часовий пояс не дорівнює UTC, будуть представляти різні моменти часу. Це означає, що два рядки з датами, які виглядають однаковими, можуть дати два різні значення залежно від формату рядка, що перетворюється (ця поведінка змінена в ECMAScript 6-го видання таким чином, що обидва випадки розглядатимуть дату в місцевому часовому поясі).

Відкат до залежних від реалізації форматів дати

У специфікації ECMAScript йдеться: якщо рядок не відповідає стандартному формату, функція може відкотитися до будь-якої залежної від реалізації евристики, або залежного від реалізації алгоритму аналізу. Нерозпізнані рядки або дати, що містять неприпустимі значення елементів у рядках формату ISO, повинні при викликі Date.parse() повертати NaN .

Однак, неприпустимі значення в рядку дати, не розпізнані як формат ISO, як визначено ES5, можуть повертати, а можуть і не повертати NaN як результат, залежно від браузера та наданих значень, наприклад:

Реалізацію евристики SpiderMonkey можна знайти у файлі jsdate.cpp . Рядок "10 06 2014" є прикладом не підходить під формат ISO і тому її розбір відкочується на підпрограму користувача. Також дивіться цю грубу схему роботи розбору рядка.

Приклад: використання методу Date.parse()

Ще кілька прикладів аналізу нестандартних рядків з датами:

Повертає 807937200000 у часовому поясі GMT-0300 та інші значення в інших часових поясах, оскільки оскільки рядок не визначає часовий пояс і не знаходиться у форматі ISO, то часовий пояс за замовчуванням дорівнює місцевому часовому поясу.

Поверне 807926400000 незалежно від місцевого часового поясу, оскільки надано специфікатор GMT (світовий координований час).

Поверне807937200000 у часовому поясі GMT-0300, та інші значення в інших часових поясах, оскільки оскільки рядок не визначає часовий пояс і не знаходиться у форматі ISO, часовий пояс за замовчуванням дорівнює місцевому часовому поясу.

Поверне 0 незалежно від місцевого часового поясу, оскільки надано специфікатор GMT (світовий координований час).

Повертає 14400000 у часовому поясі GMT-0400, та інші значення в інших часових поясах, оскільки рядок не визначає часовий пояс і не знаходиться у форматі ISO, то використовується місцевий часовий пояс.

Поверне 14400000 незалежно від місцевого часового поясу, оскільки надано специфікатор GMT (світовий координований час).