Управление датами

Еще один встроенный объект, с которым вам необходимо обязательно познакомиться, - это Date. Этот объект позволяет использовать в сценариях JavaScript даты и время. Вы можете создать объект Date в любой момент, когда вам понадобится задать дату или применить метод, управляющий датами.

Объект Date не имеет ни одного свойства. Чтобы получить или определить значение объекту Date, необходимо использовать методы, описанные ниже.

Даты в JavaScript сохраняются в миллисекуднах, начиная с 00:00 01.01.1970. Эта дата называется эпохальной. Даты до этого момента времени использовать в JavaScript нельзя. Это означает, что в обоъекте Date нельзя сохранять дни рождения ваших родителей и, тем более дедушек и бабушек. Это вызвано тем, что в сценариях намного чаще приходится иметь дело с настоящим, нежели с прошлым.

Создание объекта Date

Объект Date создается так же, как и другие объекты JavaScript, - с помощью ключевого слова new. При создании объекта также можно указать и дату, сохраняемую в нем. Для этого используется один из следующих форматов записи:

birthday = new Date();
birthday = new Date("June 12, 1982 08:00:00");
birthday = new Date(6, 12, 1982);
birthday = new Date(6, 12, 1982, 8, 0, 0);

Выберите один из форматов, в зависимости от вводимого значения и его дальнейшего использования. Если при создании объектов не использовать ни одного параметра (как в первом случае), то в объекте сохраняется текущая дата. Определить дату в объекте Date позволяет метод set.

Определение значения объекта Date

Для определения значения объекта Date используется целый набор методов set.

setDate() - определяет день месяца.

setMonth() - определяет месяц. Месяц в JavaScript определяется числом в диапазоне от до 11.

setYear() - определяет год.

setTime() - определяет время (и дату), отсчитанное в миллисекуднах от начала эпохального времени.

setHours(), setMinutes() и setSeconds() - определяет время в часах, минутах и секундах соответственно.

В качестве примера приведем оператор, который определяет год объекта Date с названием holiday как 99:

holiday.setYear(99);

Получение значений объекта Date

Метод get используется для получения значений, сохраненных в объекте Date. Это единственный способ получения значений объекта Date, поскольку свойств он не имеет. Ниже приведены все используемые в JavaScript методы.

getDate() - возвращает день месяца.

getMonth() - возвращает месяц.

getYear() - возвращает год.

getTime() - возвращает время, отсчитанное в миллисекундах от начала первого января 1970 года.

getHours(), getMinutes() и getSeconds() - возвращает время в часах, минутах и секундах соответственно.

Наряду с методами setYear() и getYear(), есть еще методы, требующие введения года в четырехзначном виде: setFullYear() и getFullYear(). Чтобы избежать "проблемы 2000 года", необходимо использовать четырехзначный формат записи года.

Временные зоны

Несколько функций позволяют использовать в JavaScript даты разных временных поясов.

getTimezoneOffset() - возвращает значение сдвига во времени относительно нулевого меридиана. В этом случае локальное время определяется по определенному в Windows временному поясу.

toGMTString() - преобразует значение объекта Date в текстовое значение в формате UTC (всеобщего скоординированного времени).

toLocalString() - преобразует значение объекта Date в текст в формате локального временного пояса.

Изменение формата представления даты

Два специальных метода JavaScript позволяют изменять формат записи значения объекта Date. Вместо того чтобы применять эти методы к созданному объекту Date, используйте их вместе со встроенным объектом Date.

Date.parse() - преобразует текстовую запись даты, например Jun 12, 1982, в значение объекта Date (число миллисекунд, отсчитанных от начала 1/1/1970).

Date.UTC() - выполняет обратное предыдущему методу действие. Преобразует значение объекта Date (введенное в миллисекундах) в привычный вид.

Применение объектов Math на практике

Метод Math.random, описанный в прошлом выпуске рассылки, генерирует случайное значение в диапазоне 0-1. Тем не менее, для компьютера очень сложно сгенерировать действительно произвольное значение. (Человеку сделать это еще сложнее, поэтому для решения этой задачи привлекаются компьютеры.)

На сегодня компьютеры достигли больших высот в методах генерирования случайных чисел. Насколько хорошо выполняет эту операцию функция Math.random? Один из способов проверить это - сгенерировать достаточно большой набор случайных чисел и получить их среднее арифметическое.

По теории среднее бесконечного числа случайных чисел должно равняться 0,5. Чем больше сгенерировать чисел, тем больше будет приближаться их среднее значение к величине 0,5.

В качестве примера использования метода Math.random создадим сценарий, который позволяет проверить точность этой функции. Для этого сгенерируем 5000 случайных чисел и вычислим их среднее значение.

В самом начале сценария объявим переменную total. Эта переменная будет сохранять сумму всех случайных чисел. Поэтому определим ей начальное значение .

total = 0;

Дальше зададим цикл, который будет выполнять одни и те же операторы 5000 раз. Поскольку мы знаем точное количество итераций, будем использовать цикл for:

for (i=1; i<=5000; i++) {

В теле цикла необходимо ввести операторы генерирования произвольного числа и вычисления текущего значения переменной total:

num = Math.random();
total += num;
}

Чтобы быть уверенным, что во время выполнения сценария компьютер не завис, а проводит вычисления, выведем сообщение о количестве сгенерированных чисел в строке состояния:

window.status = "Сгенерировано " + i + " чисел. Общая сумма: " + total;

В конце сценария необходимо рассчитать среднее значение (значение переменной total делится на 5000). Определим точность полученного значения до трех десятичных знаков. Для этого применим способ, описанный в прошлом выпуске:

average = total/5000;
average = Math.round(average * 1000) / 1000;
document.write("<H2>Среднее арифметическое случайных чисел: " + average + "</H2>");

(Если у вас компьютер очень старый и имеет тактовую частому ниже 60 МГц, то уменьшите количество итераций, иначе вам придется ждать результатов очень долго.)

Чтобы протестировать полученный сценарий, вставьте его в документ HTML, обозначив дескрипторами <SCRIPT>.

Листинг 17.1 содержит полный программный код работающей вэб-страницы с созданным сценарием.

Листинг 17.1. Сценарий вычисления среднего значения случайных чисел


1:    <HTML>
2:    <HEAD>
3:    <TITLE>Пример использования объекта Math</TITLE>
4:    </HEAD>
5:    <BODY>
6:    <H1>Пример использования объекта Math</H1>
7:    <p>Насколько случайны числа, полученные
8:    генератором случайных чисел? Подсчитаем
9:    среднее 5000 случайных чисел.</p>
10:    <SCRIPT LANGUAGE="JavaScript">
11:    total = 0;
12:    for (i=1; i<=5000; i++) {
13:      num = Math.random();
14:      total += num;
15:      window.status = "Сгенерировано " + i + " чисел. Общая сумма: " + total;
16:   }
17:   average = total/5000;
18:   average = Math.round(average * 1000) / 1000;
19:   document.write("<H2>Среднее арифметическое случайных чисел: " + average + "</H2>");
20:   </SCRIPT>
21:   </BODY>
22:   </HTML>

                   

Чтобы проверить правильность выполнения сценария, загрузите вэб-страницу в браузер. В строке состояния будет отображаться прогресс вычислений. После вычисления среднего 5000 случайных чисел на экран будет выведен результат. У меня получилось 0,496.

nextn.bmp (246 bytes)

home.gif (161 bytes)

next.gif (900 bytes)

Сайт управляется системой uCoz