aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/javascript/guide/numbers_and_dates/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/ru/web/javascript/guide/numbers_and_dates/index.html')
-rw-r--r--files/ru/web/javascript/guide/numbers_and_dates/index.html378
1 files changed, 378 insertions, 0 deletions
diff --git a/files/ru/web/javascript/guide/numbers_and_dates/index.html b/files/ru/web/javascript/guide/numbers_and_dates/index.html
new file mode 100644
index 0000000000..7022834e0d
--- /dev/null
+++ b/files/ru/web/javascript/guide/numbers_and_dates/index.html
@@ -0,0 +1,378 @@
+---
+title: Числа и даты
+slug: Web/JavaScript/Guide/Numbers_and_dates
+translation_of: Web/JavaScript/Guide/Numbers_and_dates
+---
+<div>{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Expressions_and_Operators", "Web/JavaScript/Guide/Text_formatting")}}</div>
+
+<p class="summary">Данный раздел представляет собой введение в работу с числами и датами в JavaScript.</p>
+
+<h2 id="Числа">Числа</h2>
+
+<p>В JavaScript все числа являются <a class="external external-icon" href="https://en.wikipedia.org/wiki/Double-precision_floating-point_format">числами двойной точности в соответствии с 64-битным двоичным форматом IEEE 754</a> (т.е. числами, пренадлежащими диапазону между -(2<sup>53</sup> -1) и 2<sup>53</sup> -1). <strong>Целые числа не рассматриваются как отдельный тип чисел</strong>. В дополнение к числам с плавающей запятой, к числовому типу данных относятся также три символьные величины: <code>+</code>{{jsxref("бесконечность")}}, <code>-</code>{{jsxref("бесконечность")}}, и {{jsxref("NaN")}} (не-число). В разделе <a href="/en-US/docs/Web/JavaScript/Data_structures">типы и структуры данных в JavaScript</a> числовой тип данных описан в контексте с другими примитивными типами в JavaScript.</p>
+
+<p>Вы можете использовать четыре типа числовых литералов: десятичный, двоичный, восьмеричный и шестнадцатеричный.</p>
+
+<h3 id="Десятичные_числа">Десятичные числа</h3>
+
+<pre class="brush: js">1234567890
+42
+
+// Будьте внимательны при использование нулей в начале чисел:
+
+0888 // 888 обрабатывается как десятичное
+0777 // обрабатывается как восьмеричное в нестрогой форме (511 в десятичной)
+</pre>
+
+<p>Обратите внимание, что десятичные литералы могут начинаться с нуля (<code>0</code>) за которым следует другая десятичная цифра, но если следующая за нулем цифра меньше 8, то число обрабатывается как восьмеричное.</p>
+
+<h3 id="Двоичные_числа">Двоичные числа</h3>
+
+<p>Систаксис двоичных чисел использует ведущий 0 за которым следует латинская буква "B" в верхнем или нижнем регистре (<code>0b</code> or <code>0B</code>). Если цифры после <code>0b</code> не являются 0 или 1, то будет сгенерированно <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError">SyntaxError</a></code> с сообщением: "Missing binary digits after 0b".</p>
+
+<pre class="brush: js">var FLT_SIGNBIT = 0b10000000000000000000000000000000; // 2147483648
+var FLT_EXPONENT = 0b01111111100000000000000000000000; // 2139095040
+var FLT_MANTISSA = 0B00000000011111111111111111111111; // 8388607</pre>
+
+<h3 id="Восьмеричные_числа">Восьмеричные числа</h3>
+
+<p>Синтаксис восмеричных чисел использует ноль в начале. Если цифры после 0 не входят в диапазон от 0 до 7, число будет интерпретированно как десятичное.</p>
+
+<pre class="brush: js">var n = 0755; // 493
+var m = 0644; // 420
+</pre>
+
+<h3 id="Шестнадцатеричные_числа">Шестнадцатеричные числа</h3>
+
+<p>Синтаксис  шестнадцатеричных чисел исользует ведущий 0 за которым следует латинская буква "X" в верхнем или нижнем регистре (<code>0x</code> or <code>0X</code>). Если цифры после 0x не входят в диапазон (0123456789ABCDEF),  то будет сгенерированно <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError">SyntaxError</a></code> с сообщением: "Identifier starts immediately after numeric literal".</p>
+
+<pre class="brush: js">0xFFFFFFFFFFFFFFFFF // 295147905179352830000
+0x123456789ABCDEF // 81985529216486900
+0XA // 10
+</pre>
+
+<h2 id="Объект_Number">Объект Number</h2>
+
+<p>У этого встроенного объекта {{jsxref("Number")}} есть свойства для целочисленных констант, таких как максимальное число, не-число и бесконечность. Вы не можете изменить значения этих свойств, и Вы должны использовать их следующим образом:</p>
+
+<pre class="brush: js">var biggestNum = Number.MAX_VALUE;
+var smallestNum = Number.MIN_VALUE;
+var infiniteNum = Number.POSITIVE_INFINITY;
+var negInfiniteNum = Number.NEGATIVE_INFINITY;
+var notANum = Number.NaN;
+</pre>
+
+<p>Как видно из примера выше, для получения перечисленных значений, нужно обращаться к свойствам предопределенного глобального объекта <code>Number</code>. Тогда как у экземпляра этого объекта, созданного вами при работе программы, этих свойств не будет. </p>
+
+<p>В следующей таблице приведен список свойств объекта <code>Number</code>.</p>
+
+<table class="standard-table">
+ <caption>Свойства объекта <code>Number</code></caption>
+ <thead>
+ <tr>
+ <th scope="col">Свойство</th>
+ <th scope="col">Описание</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{jsxref("Number.MAX_VALUE")}}</td>
+ <td>Наибольшее число из возможных для представления</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Number.MIN_VALUE")}}</td>
+ <td>Наименьшее число из возможных для представления</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Number.NaN")}}</td>
+ <td>Специальное "Не числовое" ("not a number") значение</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Number.NEGATIVE_INFINITY")}}</td>
+ <td>Специальное значение "Минус бесконечность"; возвращается при переполнении</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Number.POSITIVE_INFINITY")}}</td>
+ <td>Специальное значение "Плюс бесконечность"; возвращается при переполнении</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Number.EPSILON")}}</td>
+ <td>Разница между единицей и наименьшим значением, большим единицы, которое может быть представлено типом {{jsxref("Number")}}.</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Number.MIN_SAFE_INTEGER")}}</td>
+ <td>Минимальное целое, безопасное число в JavaScript.</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Number.MAX_SAFE_INTEGER")}}</td>
+ <td>Максимальное целое, безопасное число в JavaScript.</td>
+ </tr>
+ </tbody>
+</table>
+
+<table class="standard-table">
+ <caption>Методы объекта <code>Number</code></caption>
+ <thead>
+ <tr>
+ <th>Метод</th>
+ <th>Описание</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{jsxref("Number.parseFloat()")}}</td>
+ <td>Принимает строку как аргумент, и возвращает числовое значение с плавающей точкой, которое удалось распознать.<br>
+ Тоже самое что и глобальная функция {{jsxref("parseFloat", "parseFloat()")}}.</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Number.parseInt()")}}</td>
+ <td>Принимает строку как аргумент, и возвращает целочисленное значение в заданной системе исчисления, которое удалось распознать.<br>
+ Тоже самое что и глобальная функция {{jsxref("parseInt", "parseInt()")}}.</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Number.isFinite()")}}</td>
+ <td>Определяет, является ли число, переданное в качестве аргумента, конечным.</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Number.isInteger()")}}</td>
+ <td>Определяет, является ли число, переданное в качестве аргумента, целым.</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Number.isNaN()")}}</td>
+ <td>Определяет, является ли число, переданное в качестве аргумента, {{jsxref("Global_Objects/NaN", "NaN")}} (не числом). Аналогичный, но более надежный метод чем глобальная функция {{jsxref("Global_Objects/isNaN", "isNaN()")}}.</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Number.isSafeInteger()")}}</td>
+ <td>Определяет, является ли .число, переданное в качестве аргумента, целым и безопасным.</td>
+ </tr>
+ </tbody>
+</table>
+
+<p><code><font face="Open Sans, Arial, sans-serif">Прототип </font>Number</code> предоставляет ряд методов, для получения значения числа в различных форматах. В следующей таблице перечислены методы, доступные через <code>Number.prototype</code>.</p>
+
+<table class="standard-table">
+ <caption>Методы <code>Number.prototype</code></caption>
+ <thead>
+ <tr>
+ <th scope="col">Метод</th>
+ <th scope="col">Описание</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{jsxref("Number.toExponential", "toExponential()")}}</td>
+ <td>Возвращает строку, представляющую число в экспоненциальном представлении.</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Number.toFixed", "toFixed()")}}</td>
+ <td>Возвращает строку, представляющую число с заданным количеством разрядов после запятой.</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Number.toPrecision", "toPrecision()")}}</td>
+ <td>Возвращает строку, представляющую число с указанной точностью.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Объект_Math"><code>Объект Math</code></h2>
+
+<p>Встроенный глобальный объект {{jsxref("Math")}} содержит свойства и методы для математических констант и функций. Например, свойство объекта <code>Math </code><code>PI</code> содержит значение математической константы "Пи" (3.141...), которые вы можете использовать в программе как</p>
+
+<pre class="brush: js">Math.PI
+</pre>
+
+<p>Подобным образом, математические функции являются методами объекта <code>Math</code>. Они включают тригонометрические, логорифмические, экспоненциальные и другие функции. Например, если вы хотите использовать тригонометрическую функцию синуса, вы напишете следующий код</p>
+
+<pre class="brush: js">Math.sin(1.56)
+</pre>
+
+<p>Заметьте, что все тригонометрические методы объекта <code>Math</code> принимают аргументы в радианах.</p>
+
+<p>В следующей таблице перечислены методы объекта <code>Math</code>.</p>
+
+<table class="standard-table">
+ <caption>Методы объекта <code>Math</code></caption>
+ <thead>
+ <tr>
+ <th scope="col">Метод</th>
+ <th scope="col">Описание</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{jsxref("Math.abs", "abs()")}}</td>
+ <td>Возвращает абсолютное значение (модуль) аргумента</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Math.sin", "sin()")}}, {{jsxref("Math.cos", "cos()")}}, {{jsxref("Math.tan", "tan()")}}</td>
+ <td>Стандартные тригонометрические функции; принимают аргументы в радианах</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Math.asin", "asin()")}}, {{jsxref("Math.acos", "acos()")}}, {{jsxref("Math.atan", "atan()")}}, {{jsxref("Math.atan2", "atan2()")}}</td>
+ <td>Обратные тригонометрические функции; возвращают значения в радианах</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Math.sinh", "sinh()")}}, {{jsxref("Math.cosh", "cosh()")}}, {{jsxref("Math.tanh", "tanh()")}}</td>
+ <td>Гиперболические тригонометрические функции; принимают аргументы в гиперболических углах</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Math.asinh", "asinh()")}}, {{jsxref("Math.acosh", "acosh()")}}, {{jsxref("Math.atanh", "atanh()")}}</td>
+ <td>Обратные гиперболические тригонометрические функции; возвращают значения в гиперболических углах</td>
+ </tr>
+ <tr>
+ <td>
+ <p>{{jsxref("Math.pow", "pow()")}}, {{jsxref("Math.exp", "exp()")}}, {{jsxref("Math.expm1", "expm1()")}}, {{jsxref("Math.log10", "log10()")}}, {{jsxref("Math.log1p", "log1p()")}}, {{jsxref("Math.log2", "log2()")}}</p>
+ </td>
+ <td>Экпоненциальные и логорифмические функции</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Math.floor", "floor()")}}, {{jsxref("Math.ceil", "ceil()")}}</td>
+ <td>Возвращают наибольшее/наименьшее целое, которое меньше/больше или равно входному значению</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Math.min", "min()")}}, {{jsxref("Math.max", "max()")}}</td>
+ <td>Возвращают наибольшее или наименьшее (соответственно) из входных числовых значений, перечисленных через запятую</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Math.random", "random()")}}</td>
+ <td>Возвращает случайное число от 0 до 1</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Math.round", "round()")}}, {{jsxref("Math.fround", "fround()")}}, {{jsxref("Math.trunc", "trunc()")}},</td>
+ <td>Функции округления и отсечения дробной части</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Math.sqrt", "sqrt()")}}, {{jsxref("Math.cbrt", "cbrt()")}}, {{jsxref("Math.hypot", "hypot()")}}</td>
+ <td>Корень квадратный, корень кубический, корень квадратный из суммы квадратов аргументов</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Math.sign", "sign()")}}</td>
+ <td>Знак числа, показывает является ли входное число позитивным, негативным или равным нулю</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Math.clz32", "clz32()")}},<br>
+ {{jsxref("Math.imul", "imul()")}}</td>
+ <td>Количество первых нулевых бит в 32-битном двоичном представлении.<br>
+ Возвращает результат Cи-подобного 32-битного целочисленного умножения двух аргументов.</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>В отличии от большинства других объектов, вам не нужно создавать свои экземпляры объекта <code>Math</code>. Всегда следует использовать глобальный объект <code>Math</code> непосредственно.</p>
+
+<h2 id="Объект_Date"><code>Объект Date</code></h2>
+
+<p>JavaScript не имеет отдельного типа данных для хранения дат. Однако, вы можете использовать объект {{jsxref("Date")}} и его методы для работы с датами и времененем в вашем приложении. Объект <code>Date</code> имеет большое количество методов для записи, чтения и оперирования датой и временем, а свойств не имеет ни одного.</p>
+
+<p>JavaScript оперирует датами во многом аналогично языку Java. Для работы с датой эти два языка имеют множество одинаковых методов, и оба они хранят даты как количество миллисекунд, прошедших с 00:00:00 1 Января 1970 года.</p>
+
+<p>Период значений, которые может принимать Data, простирается от -100 000 000 до100 000 000 дней, относительно 1 Января 1970 года.</p>
+
+<p>Чтобы создать свой экземпляр объекта <code>Date используйте такой код</code>:</p>
+
+<pre class="brush: js">var dateObjectName = new Date([parameters]);
+</pre>
+
+<p>где <code>dateObjectName</code> это имя переменной, которой будет присвоено созданное значение с типом <code>Date</code>; вместо этой переменной, присвоить созданное значение можно как свойство, любому существующему объекту.</p>
+
+<p>Вызов <code>Date</code> как функции, без ключевого слова <code>new,</code> возвращает текущую дату и время в виде текстовой строки.</p>
+
+<p>Содержимым блока <code>parameters</code> в коде представленном выше, могут выступать любая из следующих конструкций:</p>
+
+<ul>
+ <li>Пусто: создает текущую дату и время. Пример: <code>today = new Date();</code>.</li>
+ <li>Текстовая строка, содержащая дату и время в следующем формате: "Месяц день, год часы:минуты:секунды". Например: <code>var Xmas95 = new Date("December 25, 1995 13:30:00")</code>. Если не указать секунды, минуты или часы, то их значение будет принято за 0.</li>
+ <li>Набор целочисленных значений для года, месяца и дня. Например: <code>var Xmas95 = new Date(1995, 11, 25)</code>.</li>
+ <li>Набор целочисленных значений для года, месяца, дня, часов, минут и секунд. Например: <code>var Xmas95 = new Date(1995, 11, 25, 9, 30, 0);</code>.</li>
+</ul>
+
+<h3 id="Получение_даты_в_русскоязычном_формате">Получение даты в русскоязычном формате</h3>
+
+<pre>new Date().toLocaleString('ru',
+ {
+ day: 'numeric',
+ month: 'long',
+ year: 'numeric'
+ });
+// текущая дата в формате: '10 января 2019 г.'
+</pre>
+
+<p><a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString">Подробнее про метод toLocalString</a></p>
+
+<h3 id="Методы_объекта_Date">Методы объекта <code>Date</code></h3>
+
+<p>Методы объекта <code>Date</code> для работы с датой и временем делятся на следующие категории:</p>
+
+<ul>
+ <li>"set" методы, служат для установки параметров объекта <code>Date</code>.</li>
+ <li>"get" методы, служат для получения параметров объекта <code>Date</code>.</li>
+ <li>"to" методы, служат для получения значения объекта <code>Date</code> в текстовом виде.</li>
+ <li>"parse" и UTC методы, служат для распознавания дат и времени <font face="Consolas, Liberation Mono, Courier, monospace">из тектового формата</font>.</li>
+</ul>
+
+<p>При помощи методов групп "get" и"set", вы можете получить и установить значения секунд, минут, часов, дня месяца, дня недели, месяца и года по отдельности. Отдельно выделим метод <code>getDay</code>, который возвращает день недели, однако соответствующего ему метода <code>setDay</code> не существует, потому-что день недели высчитывается автоматически. Все эти методы используют в своей работе целочисленные значения по следующим правилам:</p>
+
+<ul>
+ <li>Секунды и минуты: от 0 до 59</li>
+ <li>Часы: от 0 до 23</li>
+ <li>Дни недели: от 0 (Воскресенье) до 6 (Суббота)</li>
+ <li>Дни месяца: от 1 до 31</li>
+ <li>Месяцы: от 0 (Январь) до 11 (Декабрь)</li>
+ <li>Год: год относительно 1900 года.</li>
+</ul>
+
+<p>Например, предположим, что вы определили дату следующим образом:</p>
+
+<pre class="brush: js">var Xmas95 = new Date("December 25, 1995");
+</pre>
+
+<p>Тогда <code>Xmas95.getMonth()</code> вернет 11, а <code>Xmas95.getFullYear()</code> вернет 1995.</p>
+
+<p>Методы <code>getTime</code> и <code>setTime могут быть</code> полезны при сравнении дат. Метод <code>getTime</code> возвращает количество миллисекунд, прошедших с 00:00:00 1 Января, 1970 года.</p>
+
+<p>Для примера рассмотрим следующий код, показывающий количество дней оставшихся до конца текущего года:</p>
+
+<pre class="brush: js">var today = new Date(); // Получаем текущую дату
+var endYear = new Date(1995, 11, 31, 23, 59, 59, 999); // Устанавливаем месяц и день на конец года
+endYear.setFullYear(today.getFullYear()); // Устанавливаем текущий год
+var msPerDay = 24 * 60 * 60 * 1000; // Количество миллисекунд в одних сутках
+var daysLeft = (endYear.getTime() - today.getTime()) / msPerDay;
+var daysLeft = Math.round(daysLeft); // возвращает количество дней, оставшихся до конца года
+</pre>
+
+<p>Этот пример создает объект <code>Date</code> названный <code>today, который содержит текущую дату и время</code>. Затем, создается воспомогательный <code>Date</code> объект, названный <code>endYear,</code> которому устанавливаются значения, указывающие на конец года. После этого, при помощи расчитанного количества миллисекунд в сутках, вычисляется количество дней между  <code>today</code> и <code>endYear</code>, При этом используются метод <code>getTime</code> и округление, для получения количества полных дней.</p>
+
+<p>Метод <code>parse</code> полезен для присвоения значений существующим объектам <code>Date</code> из текстового формата. Например, следующий код использует мотоды <code>parse</code> и <code>setTime</code> чтобы установить значение переменной <code>IPOdate</code>:</p>
+
+<pre class="brush: js">var IPOdate = new Date();
+IPOdate.setTime(Date.parse("Aug 9, 1995"));
+</pre>
+
+<h3 id="Пример">Пример</h3>
+
+<p>В следующем примере приведена функция <code>JSClock(), которая возвращает время в формате электронных часов:</code></p>
+
+<pre class="brush: js">function JSClock() {
+ var time = new Date();
+ var hour = time.getHours();
+ var minute = time.getMinutes();
+ var second = time.getSeconds();
+ var temp = "" + ((hour &gt; 12) ? hour - 12 : hour);
+ if (hour == 0)
+ temp = "12";
+ temp += ((minute &lt; 10) ? ":0" : ":") + minute;
+ temp += ((second &lt; 10) ? ":0" : ":") + second;
+ temp += (hour &gt;= 12) ? " P.M." : " A.M.";
+ return temp;
+}
+</pre>
+
+<p>Первым делом, функция JSClock создает новый объект <code>Date</code>, названный <code>time</code>; так как объект создается баз параметров, переменная <code>time </code>содержит текущую дату и время. Затем вызываются методы <code>getHours</code>, <code>getMinutes </code>и <code>getSeconds</code>, чтобы установить значения переменным <code>hour</code>, <code>minute </code>и <code>second</code>.</p>
+
+<p>Следующие четыре выражения строят текстовую строку на основе time. Первое из них создает переменную <code>temp</code>, присваивая ей значение при помощи условия; Если <code>hour</code> больше чем 12, то (<code>hour - 12</code>), иначе просто <code>hour.</code> В случае же, когда <code>hour</code> равно 0, берется фиксированное значение "12".</p>
+
+<p>Следующее выражение приращивает минуты к переменной <code>temp</code>. Если количество минут меньше 10, то условное выражение добавляет строку с двоеточием и заполняющим нулем, иначе, просто строку с двоеточием. Секунды приращиваются к переменной <code>temp</code> тем же путем.</p>
+
+<p>В завершение всего, последнее условное выражение добавляет строку "P.M." к переменной <code>temp</code> если <code>hour</code> равно или больше 12, иначе, добавляется строка "A.M.".</p>
+
+<p>{{PreviousNext("Web/JavaScript/Guide/Expressions_and_Operators", "Web/JavaScript/Guide/Text_formatting")}}</p>