aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/javascript/reference/errors/deprecated_tolocaleformat/index.html
blob: e66d419329d6b63ea00d3455c4de0ebf2a0ca678 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
---
title: 'Warning: Date.prototype.toLocaleFormat (Является устаревшим)'
slug: Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat
translation_of: Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat
---
<div>{{jsSidebar("Errors")}}</div>

<h2 id="Сообщение">Сообщение</h2>

<pre class="syntaxbox">Внимание: Date.prototype.toLocaleFormat устарело; рассмотрите возможность использования Intl.DateTimeFormat взамен.
</pre>

<h2 id="Тип_ошибки">Тип ошибки</h2>

<p>предупреждающий. Выполнение скрипта не будет остановлено.</p>

<h2 id="Что_пошло_не_так">Что пошло не так?  </h2>

<p>Нестандартный {{jsxref("Date.prototype.toLocaleFormat")}} метод, устарел и больше не должен использоваться. Он использует строку формата в том же формате, ожидаемом<br>
 <code>strftime()</code> функция в C. функция больше не доступна в Firefox 58+.</p>

<h2 id="Примеры">Примеры</h2>

<h3 id="Неправильный_синтаксис">Неправильный синтаксис</h3>

<p>В {{jsxref("Date.prototype.toLocaleFormat")}} метод устарел и будет удалён (поддержка кроссбраузерных браузеров, доступна только в Firefox).</p>

<pre class="brush: js example-bad">var today = new Date();
var date = today.toLocaleFormat('%A, %e. %B %Y');

console.log(date);
// In German locale
// "Freitag, 10. März 2017"</pre>

<h3 id="Альтернативный_стандартный_синтаксис_с_использованием_ECMAScript_IntlAPI">Альтернативный стандартный синтаксис с использованием ECMAScript IntlAPI</h3>

<p>Стандарт ECMA-402 (ECMAScript Intl API) определяет стандартные объекты и методы, которые позволяют форматировать дату и время с учётом языка (доступно в Chrome 24+, Firefox 29+, IE11+, Safari10+).</p>

<p>You can now either use the {{jsxref("Date.prototype.toLocaleDateString")}} method if you just want to format one date.</p>

<pre class="brush: js example-good">var today = new Date();
var options = { weekday: 'long', year: 'numeric',
                month: 'long', day: 'numeric' };
var date = today.toLocaleDateString('de-DE', options);

console.log(date);
// "Freitag, 10. März 2017"
</pre>

<p> </p>

<p>Или, вы можете использовать {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} объект, который позволяет кешировать объект с большинством вычислений, выполненных таким образом, чтобы Форматирование было быстрым. Это полезно, если у вас есть цикл дат для форматирования.</p>

<pre class="brush: js example-good">var options = { weekday: 'long', year: 'numeric',
                month: 'long', day: 'numeric' };
var dateFormatter = new Intl.DateTimeFormat('de-DE', options)

var dates = [Date.UTC(2012, 11, 20, 3, 0, 0),
             Date.UTC(2014, 04, 12, 8, 0, 0)];

dates.forEach(date =&gt; console.log(dateFormatter.format(date)));

// "Donnerstag, 20. Dezember 2012"
// "Montag, 12. Mai 2014"
</pre>

<h3 id="Альтернативный_стандартный_синтаксис_с_использованием_Дата_методов">Альтернативный стандартный синтаксис с использованием Дата методов</h3>

<p>{{jsxref("Date")}} объект предлагает несколько методов для построения пользовательской строки даты.</p>

<pre class="brush: js example-bad">(new Date()).toLocaleFormat("%Y%m%d");
// "20170310"
</pre>

<p>Может быть преобразован в:</p>

<pre class="brush: js example-good">let now = new Date();
let date = now.getFullYear() * 10000 +
          (now.getMonth() + 1) * 100 + now.getDate();

console.log(date);
// "20170310"</pre>

<h2 id="Смотрите_также">Смотрите также </h2>

<ul>
 <li>{{jsxref("Date.prototype.toLocaleFormat")}}</li>
 <li>{{jsxref("Date.prototype.toLocaleDateString")}}</li>
 <li>{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}</li>
</ul>