ОГЛАВЛЕНИЕ
1 Создание объектов дата класса Date
2 Методы класса Date
Пример 1
Пример 2
1 Создание объектов класса Date
Класс даты Date служит для хранения значений даты
и времени. Объекты этого класса создаются с помощью конструктора
Date([par]), который принимает значение даты в
числовом или строковом формате.
Если параметр par представлен в числовом формате, он трактуется как число миллисекунд, прошедших
с полуночи 1 января 1970 года по Гринвичу. Если он представлен в строковом
формате, конструктор пытается представить его в значение даты или времени по
следующим правилам:
- строка, имеющая формат "месяц/число/год" или "месяц.число.год" ( например,
04.30.10) преобразуется в дату;
- строка, имеющая формат "месяц число год" (например, April 30 2010)
преобразуется в дату;
- строка, имеющая формат "часы:минуты:секунды" (например, 10:04:57)
преобразуется во время;
- строка, имеющая формат "часы:минуты PM" (например, 10:04 PM) преобразуется
во время.
Например, дата запуска первого искусственного спутника земли может быть
задана таким образом:
sputnikLaunch = new Date("October 4, 1957 19:28:34 GMT");
Конструктор объекта даты может иметь и такой формат:
Date(Год, Месяц, Число [, Часы[, Минуты[, Секунды [,Миллисекунды]]]]). Если не
один параметр не задан, конструктор инициализирует объект текущей датой.
Примеры инициализации объектов даты в Javascript приведены в
примерах № 1 и
№ 2.
2 Методы класса Date
Объекты класса Date используют следующие методы:
- getTime() - возвращает целое число миллисекунд, прошедших с полуночи
1 января 1970 года по Гринвичу;
- getDay() - возвращает целое число, обозначающее день недели:
0 - воскресенье, 1 - понедельник и т.д.;
- getDate() - возвращает день месяца (целое число от 1 до 31);
- getMonth() - возвращает целое число, указывающее номер месяца (от 0 до 11);
- getFullYear() - возвращает год;
- getYear() - возвращает год (применяется для совместимости, рекомендуется
использовать getFullYear());
- getHours() - возвращает час (целое число от 0 до 59);
- getMinutes() - возвращает минуты (целое число от 0 до 59);
- getSeconds() - возвращает секунды (целое число от 0 до 59);
- getMilliseconds() - возвращает миллисекунды (целое число от 0 до 999);
- getTimezoneOffset() - возвращает различие в минутах между локальным и
универсальным временем UTC*;
- getUTCTime() - возвращает число по UTC;
- getUTCDay() - возвращает число по UTC;
- getUTCDate() - возвращает число по UTC;
- getUTCMonth() - возвращает целое число по UTC;
- getUTCFullYear() - возвращает год по UTC;
- getUTCHours() - возвращает час по UTC;
- getUTCMinutes() - возвращает минуты по UTC;
- getUTCSeconds() - возвращает секунды по UTC;
- getUTCMilliseconds() - возвращает миллисекунды по UTC;
- setTime(Число) - устанавливает время с учетом числа миллисекунд, прошедших
с полуночи 1 января 1970 года по Гринвичу, заданных в качестве параметра;
- setDate(Число) - устанавливает день месяца;
- setMonth(Месяц[, Число]) - устанавливает месяц и число, если задано;
- setFullYear(Год[, Месяц[, Число]]) - устанавливает год, а также месяц и
число, если заданы;
- setYear(Год) - устанавливает год (применяется для совместимости,
рекомендуется использовать setFullYear();
- setHours(Час[, Минуты[, Секунды[, Миллисевкунды]]]]) - устанавливает час, а
также минуты, секунды и миллисекунды, если заданы;
- setMinutes(Минуты[, Секунды[, Миллисевкунды]]]) - устанавливает минуты, а
также секунды и миллисекунды, если заданы;
- setSeconds(Секунды[, Миллисевкунды]) - устанавливает секунды, а также
миллисекунды, если заданы;
- setMilliseconds(Миллисевкунды) - устанавливает миллисекунды;
- setUTCDate(Число) - устанавливает день месяца по UTC;
- setUTCMonth(Месяц[, Число]) - устанавливает месяц и число, если задано,
по UTC;
- setUTCFullYear(Год[, Месяц[, Число]]) - устанавливает год, а также месяц и
число, если заданы, по UTC;
- setUTCHours(Час[, Минуты[, Секунды[, Миллисевкунды]]]]) - устанавливает час, а
также минуты, секунды и миллисекунды, если заданы, по UTC;
- setUTCMinutes(Минуты[, Секунды[, Миллисевкунды]]]) - устанавливает минуты, а
также секунды и миллисекунды, если заданы, по UTC;
- setUTCSeconds(Секунды[, Миллисевкунды]) - устанавливает секунды, а также
миллисекунды, если заданы, по UTC;
- setUTCMilliseconds(Миллисевкунды) - устанавливает миллисекунды по UTC;
- parse - расшифровывает строку согласно приведенным выше правилам и
возвращает число миллисекунд, прошедших между полученной датой и полуночью 1
января 1970 года по Гринвичу;
- toUTCString() - преобразует дату в строку в формате универсального времени
и возвраащает ее;
- toGMTString() - преобразует дату в строку в формате гринвичского времени
и возвраащает ее (применяется для совместимости, рекомендуется использовать
toUTCString();
- tolocaleString() - преобразует дату в строку, используя интернациональные
установки системы, и возвраащает ее (не рекомендуется использовать для
вычислений);
- toSource - возвращает строку, представляющую исходный код даты;
- toString() - преобразует дату в строку и возвраащает ее.
*Примечание: Универсальное время UTC (Universal Coordinated Time)
было введено вместо времени по Гринвичу GMT (Greenwich Mean Time) из-за
неравномерной шкалы GMT, связанной с неравномерным вращением Земли.
Универсальное время определяет среднее солнечное время на меридиане Гринвича на
базе равномерной шкалы атомного времени. UTC не переводится ни зимой, ни летом.
Использование методов класса
Date показано в примерах
№ 1 и
№ 2.
В примере №1 определяется число дней между
сегодняшним днем и датой следующего Рождества (в примере - 7 января 2011 года).
Для этого после инициализации двух объектов Date,
соответствующих этим датам, определяется число миллисекунд содержащихся в этом
промежутке времени, которое затем приводится к числу дней.
Пример 1
<HTML>
<HEAD>
<TITLE>Определение числа дней до Рождества</TITLE>
<SCRIPT>
today = new Date();
nextXmas = new Date("January 7, 2011");
msPerDay = 24 * 60 * 60 * 1000 ; // Число миллисекунд в сутках
daysLeft = (nextXmas.getTime() - today.getTime())/msPerDay;
daysLeft = Math.round(daysLeft);
alert("До следующего рождества осталось " +daysLeft+ " дней" );
</SCRIPT>
</HEAD>
</HTML>
В примере №2 осуществляется вывод значений текущей даты и текущего времени в
окно браузера, а также выполняется заданная временная задержка.
Пример 2
<HTML>
<HEAD>
<TITLE>Вывод текущей даты и времени на экран</TITLE>
<STYLE>
.text{font:8mm; color:blue; position:absolute; left:500;
top:5;background:#E0E0FF;}
</STYLE>
<SCRIPT>
function outTime()
{
txt.className="text";
txt.style.display="";
cur_time=new Date();
with (cur_time)
txt.value=getDate()+"."+eval(getMonth()+1)+"."+getYear()+
" "+
getHours()+":"+getMinutes()+":"+getSeconds();
setTimeout("outTime()",50);
}
function delay()
{
d=delay.arguments[0];
if (delay.arguments.lengh==1) par=0;
else par=delay.arguments[1];
switch(par)
{
case 0: break;
case 1: d*=1000;break;
case 2: d*=60000;break;
}
{
status="Выполняется задержка";
base_time=new Date().getTime();
test=new Date(); alert(test.getTimezoneOffset());
while(new Date().getTime()-base_time<d);
status="";
}
}
</SCRIPT>
</HEAD>
<BODY onClick="outTime()"
onContextmenu="delay(5,1); return false"">
<INPUT TYPE=text NAME="txt" SIZE=7 STYLE="display:none">
</BODY>
</HTML>
По событию Click вызывается функция outTime(),
которая устанавливает требуемые значения свойств техтового поля тэга
<INPUT> и выводит в это поле текущую дату и текущее время, определенные с
использованием методов класса Date. Размер поля и шрифта
были выбраны так, чтобы после активизации поля можно было бы, нажимая клавиши
"End" и "Home", показывать в текстовом поле по очереди или дату, или время.
По событию Contextmenu выполняется вызов функции
Delay(5,1), которая осуществляет пятисекундную
задержку путем сравнения текущего времени с базовым, определенным в начале
задержки. В течение задержки в поле статуса окна браузера выводится сообщение
"Выполняется задержка".
Особенностью этой функции является то, что из двух ее параметров первый
является обязательным - он указывает численное значение задержки, а второй,
который определяет, в каких единицах задается задержка, является необязательным.
В случае, если он не указан при вызове функции, его значение принимается по
умолчанию. Второй параметр может принимать следующие значения:
- 0 - время задержки указывается в миллисекундах (значение по умолчанию);
- 1 - время задержки указывается в секундах;
- 2 - время задержки указывается в минутах;
Чтобы определить, сколько параметров было передано функции в каждом
конкретном случае и их значения, необходимо воспользоваться массивом
arguments, который, являясь свойством класса функций
Function, содержит значения всех аргументов,
переданных функции при ее вызове: выражение delay.arguments[0]
задает первый аргумент функции, выражение
delay.arguments[1] - второй аргумент, а
delay.arguments.length - количество аргументов,
переданных функции. Заметим, что массив arguments
доступен только в теле функции.