diff options
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/date/parse/index.html')
-rw-r--r-- | files/uk/web/javascript/reference/global_objects/date/parse/index.html | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/date/parse/index.html b/files/uk/web/javascript/reference/global_objects/date/parse/index.html new file mode 100644 index 0000000000..a83c917192 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/date/parse/index.html @@ -0,0 +1,198 @@ +--- +title: Date.parse() +slug: Web/JavaScript/Reference/Global_Objects/Date/parse +tags: + - Date + - JavaScript + - Довідка + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Date/parse +--- +<div>{{JSRef}}</div> + +<p>Метод <strong><code>Date.parse()</code></strong> розбирає рядкове представлення дати та повертає кількість мілісекунд від 1 січня 1970 року, 00:00:00 за UTC, або <code>NaN</code>, якщо рядок неможливо розібрати чи, в окремих випадках, він містить недозволені значення (наприклад, 2015-02-31).</p> + +<p>Не рекомендується використовувати <code>Date.parse</code>, оскільки у версіях до ES5 розбір був повністю залежним від реалізації. Досі існують багато відмінностей у тому, як різні хости розбирають рядки з датами, тому вони мають розбиратися вручну (можна скористатись бібліотекою, якщо очікується багато різних форматів).</p> + +<div>{{EmbedInteractiveExample("pages/js/date-parse.html")}}</div> + +<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<p>Прямий виклик:</p> + +<pre class="syntaxbox notranslate">Date.parse(<var>dateString</var>) +</pre> + +<p>Неявний виклик:</p> + +<pre class="syntaxbox notranslate">new Date(<var>dateString</var>) +</pre> + +<h3 id="Параметри">Параметри</h3> + +<dl> + <dt><code><var>dateString</var></code></dt> + <dd>Рядок, що відображає <a href="#Date_Time_String_Format">спрощену версію розширеного календарного формату дати ISO 8601</a>. (Можна використовувати й інші формати, але результат залежитиме від реалізації.)</dd> +</dl> + +<h3 id="Повертає">Повертає</h3> + +<p>Число, що відображає кількість мілісекунд від 1 січня 1970 року, 00:00:00 за UTC, і дату, отриману розбором наданого рядкового представлення дати. Якщо аргумент не відображає дозволене значення дати, повертається {{jsxref("NaN")}}.</p> + +<h2 id="Опис">Опис</h2> + +<p>Метод <code>parse()</code> приймає рядок з датою (наприклад, "<code>2011-10-10T14:48:00</code>") та повертає число мілісекунд від 1 січня 1970 року, 00:00:00 за UTC.</p> + +<p>Ця функція корисна для присвоєння дати на основі рядкових значень, наприклад, у поєднанні з методом {{jsxref("Date.prototype.setTime()", "setTime()")}} та об'єктом {{jsxref("Global_Objects/Date", "Date")}}.</p> + +<h3 id="Рядковий_формат_дати_та_часу">Рядковий формат дати та часу</h3> + +<p>Стандартне рядкове представлення дати та часу є спрощенням розширеного календарного формату дати ISO 8601. (Дивіться більше подробиць у розділі <a href="https://tc39.github.io/ecma262/#sec-date-time-string-format">Date Time String Format</a> специфікації ECMAScript.)</p> + +<p>Наприклад, "<code>2011-10-10</code>" (<em>лише дата</em>), "<code>2011-10-10T14:48:00</code>" (<em>дата та час</em>) або "<code>2011-10-10T14:48:00.000+09:00</code>" (<em>дата та час</em> з мілісекундами та часовим поясом) можуть бути та будуть розібрані. Коли зсув часового поясу відсутній, форми, що містять лише дату, інтерпретуються як час UTC, а форми з датою та часом інтерпретуються як місцевий час.</p> + +<p>Хоча специфікатори часового поясу використовуються під час розбору рядків для інтерпретації аргументу, значення, що повертається, завжди буде кількістю мілісекунд між 1 січня 1970 року 00:00:00 за UTC та точкою у часі, відображеною аргументом, або ж <code>NaN</code>.</p> + +<p>Оскіьки <code>parse()</code> - статичний метод {{jsxref("Date")}}, він викликається як <code>Date.parse()</code>, а не як метод екземпляра {{jsxref("Date")}}.</p> + +<h3 id="Використання_специфічних_реалізацій_форматів_дати">Використання специфічних реалізацій форматів дати</h3> + +<div class="blockIndicator note"> +<p>Цей розділ містить специфічно реалізовану поведінку, яка може не співпадати між різними реалізаціями.</p> +</div> + +<p>Специфікація ECMAScript зазначає: Якщо рядок не відповідає стандартному формату, функція може застосовувати будь-яку специфічно реалізовану евристику чи специфічно реалізований алгоритм розбору. Рядки, які неможливо розібрати, чи дати, що містять недозволені значення елементів у рядках формату ISO, змусять метод <code>Date.parse()</code> повернути {{jsxref("NaN")}}.</p> + +<p>Однак, недозволені значення у рядках дат, які не розпізнаються в якості спрощеного формату ISO, визначеного у ECMA-262, можуть повернути або не повернути {{jsxref("NaN")}}, в залежності від переглядача, наданих значень і т.д.:</p> + +<pre class="brush: js notranslate">// Рядок не формату ISO з недозволеними значеннями у даті +new Date('23/25/2014'); +</pre> + +<p>це буде сприйнято як локальна дата 25 листопада 2015 у Firefox 30 та як неправильна дата у Safari 7.</p> + +<p>Однак, якщо рядок розпізнається як рядок формату ISO та містить недозволені значення, він поверне {{jsxref("NaN")}} в усіх переглядачах, сумісних з ES5 та пізнішими версіями:</p> + +<pre class="brush: js notranslate">// Рядок ISO з недозволеними значеннями +new Date('2014-25-23').toISOString(); +// викидає "RangeError: invalid date" в усіх переглядачах, сумісних з ES5 +</pre> + +<p>Специфічну реалізацію SpiderMonkey можна знайти у <a href="https://dxr.mozilla.org/mozilla-central/source/js/src/jsdate.cpp?rev=64553c483cd1#889"><code>jsdate.cpp</code></a>. Рядок "<code>10 06 2014</code>" є прикладом невідповідності формату ISO, і тому використовується особливий алгоритм. Дивіться також цей <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1023155#c6">короткий опис</a> того, як працює розбір.</p> + +<pre class="brush: js notranslate">new Date('10 06 2014'); +</pre> + +<p>це буде сприйматись як локальна дата 6 жовтня 2014, а не як 10 червня 2014.</p> + +<p>Інші приклади:</p> + +<pre class="brush: js notranslate">new Date('foo-bar 2014').toString(); +// повертає: "Invalid Date" + +Date.parse('foo-bar 2014'); +// повертає: NaN +</pre> + +<h3 id="Відмінності_у_отриманому_часовому_поясі">Відмінності у отриманому часовому поясі</h3> + +<div class="blockIndicator note"> +<p>Цей розділ містить специфічно реалізовану поведінку, яка може не співпадати між різними реалізаціями.</p> +</div> + +<p>Отримавши нестандартний рядок дати "<code>March 7, 2014</code>", <code>parse()</code> припускає, що він відноситься до місцевого часового поясу, але отримавши рядок у спрощеній версії розширеного календарного формату ISO 8601, наприклад, "<code>2014-03-07</code>", він припускає часовий пояс UTC (ES5 та ECMAScript 2015). Таким чином, об'єкти {{jsxref("Date")}}, отримані за допомогою цих рядків, можуть відображати різні моменти часу, в залежності від версії ECMAScript, яка підтримується, якщо тільки у системі не встановлений місцевий часовий пояс UTC. Це означає, що два рядки дат, що виглядають еквівалентними, можуть повернути два різних значення, в залежності від формату рядка, який перетворюється.</p> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="Використання_Date.parse">Використання <code>Date.parse()</code></h3> + +<p>Усі наступні виклики повертають <code>1546300800000</code>. Перший, у відповідності до ES5, застосує час UTC, а інші вказують часовий пояс UTC через специфікацію дати ISO (<code>Z</code> та <code>+00:00</code>)</p> + +<pre class="brush: js notranslate">Date.parse("2019-01-01") +Date.parse("2019-01-01T00:00:00.000Z") +Date.parse("2019-01-01T00:00:00.000+00:00") +</pre> + +<p>Наступний виклик, який не вказує часовий пояс, поверне 2019-01-01 о 00:00:00 у локальному часовому поясі системи.</p> + +<pre class="brush: js notranslate">Date.parse("2019-01-01T00:00:00") +</pre> + +<h3 id="Нестандартні_рядки_дат">Нестандартні рядки дат</h3> + +<div class="blockIndicator note"> +<p>Цей розділ містить специфічно реалізовану поведінку, яка може не співпадати між різними реалізаціями.</p> +</div> + +<p>Якщо <code>IPOdate</code> є існуючим об'єктом {{jsxref("Date")}}, йому можна призначити дату 9 серпня 1995 (за локальним часом) наступним чином:</p> + +<pre class="brush: js notranslate">IPOdate.setTime(Date.parse('Aug 9, 1995')); +</pre> + +<p>Ще кілька прикладів розбору нестандартних рядків дат:</p> + +<pre class="brush: js notranslate">Date.parse('Aug 9, 1995'); +</pre> + +<p>Повертає <code>807937200000</code> у часовому поясі GMT-0300 та інші значення у інших часових поясах, оскільки рядок не вказує часовий пояс і не відповідає формату ISO, тому часовий пояс береться локальний.</p> + +<pre class="brush: js notranslate">Date.parse('Wed, 09 Aug 1995 00:00:00 GMT'); +</pre> + +<p>Повертає <code>807926400000</code>, незалежно від локального часового поясу, оскільки вказано GMT (UTC).</p> + +<pre class="brush: js notranslate">Date.parse('Wed, 09 Aug 1995 00:00:00'); +</pre> + +<p>Повертає <code>807937200000</code> у часовому поясі GMT-0300 та інші значення у інших часових поясах, оскільки аргумент не містить вказівника часового поясу, і не відповідає формату ISO, а отже, сприймається як локальний.</p> + +<pre class="brush: js notranslate">Date.parse('Thu, 01 Jan 1970 00:00:00 GMT'); +</pre> + +<p>Повертає <code>0</code>, незалежно від локального часового поясу, оскільки вказано GMT (UTC).</p> + +<pre class="brush: js notranslate">Date.parse('Thu, 01 Jan 1970 00:00:00'); +</pre> + +<p>Повертає <code>14400000</code> у часовому поясі GMT-0400 та інші значення у інших часових поясах, оскільки часовий пояс не вказано, а рядок не відповідає формату ISO, тому використовується локальний часовий пояс.</p> + +<pre class="brush: js notranslate">Date.parse('Thu, 01 Jan 1970 00:00:00 GMT-0400'); +</pre> + +<p>Повертає <code>14400000</code>, незалежно від локального часового поясу, оскільки вказано GMT (UTC).</p> + +<h2 id="Специфікації">Специфікації</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Специфікація</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-date.parse', 'Date.parse')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> + + + +<p>{{Compat("javascript.builtins.Date.parse")}}</p> + +<h3 id="Примітки_щодо_сумісності">Примітки щодо сумісності</h3> + +<ul> + <li>Firefox 49 змінив розбір 2-значних значень року для співпадіння з переглядачем Google Chrome замість Internet Explorer. Тепер 2-значні значення року, менші за <code>50</code>, розбираються як роки 21-го сторіччя. Наприклад, <code>04/16/17</code>, що раніше інтерпретувалось як 16 квітня 1917 року тепер буде 16 квітня 2017 року. Щоб запобігти будь-яких проблем сумісності чи невизначеності, рекомендується використовувати формат ISO 8601, наприклад, "<code>2017-04-16</code>" (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1265136">помилка 1265136</a>).</li> + <li>Google Chrome прийме числовий рядок як дозволений параметр <code><em>dateString</em></code>. Це означає, що, наприклад, в той час, як команда <code>!!Date.parse("42")</code> повертає <code>false</code> у Firefox, вона поверне <code>true</code> у Google Chrome, оскільки "<code>42</code>" інтерпретується як 1 січня 2042 року.</li> +</ul> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{jsxref("Date.UTC()")}}</li> +</ul> |