Wiki-учебник по веб-технологиям: JavaScript/Data ...

Главная | Каталог |

Date-объект


Java Script? позволяет Вам использовать некоторые предопределенные объекты. Например такие как Date-object, the Array-object или the Math-object. Есть несколько других объектов – пожалуйста обратитесь к документации, предоставленной Netscape для полной справки.
Мы собираемся сначала взглянуть на Date-object. Как подразумевает имя, этот объект позволяет Вам работать со временем и датой. Например Вы можете легко вычислить, сколько дней осталось до следующего рождества. Или Вы можете добавлять текущее время в ваш HTML-документ.
Так что давайте начнём с примера, который отображает текущее время. Сначала мы должны создать новый Data-объект. Для этой цели мы используем оператор new. Посмотрите на эту строку кода:

today= new Date()

Так создается новый Date-объект, названный today. Если Вы не определяете некоторую дату и время при создании нового Date-объекта, используется текущая дата и время. Это означает после выполнения today= new Date() the new Date-object today новый Date-объект today отображает дату и время этого определенного момента.
Date-объект предлагает некоторые методы, которые теперь могут использоваться с нашим объектом today. Например это getHours(), setHours(), getMinutes(), setMinutes(), getMonth(), setMonth() и так далее. Вы можете найти полную справку по Date-объекту и его методов в Netscapes документации Java Script?.
Пожалуйста обратите внимание, что Date-объект только представляет некоторую дату и время. Это не часы, которые автоматически изменяют время каждую секунду или миллисекунду.
Чтобы получить другую дату и время, мы можем использовать другой конструктор (это – метод Date(), который вызван через оператора new при построении нового объекта даты):

today= new Date(1997, 0, 1, 17, 35, 23)

Так создается Date-объект который отобряжает первое января 1997 17:35 и 23 секунды. Так что Вы определяете дату и время подобно этому :

Date(year, month, day, hours, minutes, seconds)

Пожалуйста обратите внимание, что Вы должны использовать 0 в качестве января – а не 1, как Вы могли бы подумать. 1 в качестве февраля и так далее.

Сейчас мы напишем сценарий, который выводит текущую дату и время. Результат будет выглядеть наподобие этого:

Time: 0:1
Date: 5/30/2010

Исходный текст представлен ниже:



Здесь мы используем методы типа getHours() чтобы отобразить время и дату, определенного снаружи Date-объекте now. Вы видите, что мы добавляем 1900 к году. Метод getYear() возвращает число лет начиная с 1900. Это означает, что если год 1997, то он возвратит 97, если год – 2010, то он возвратит 110 – а не 10! Если мы добавляем 1900, мы не будем иметь проблему 2000 года. Не забудьте, что мы должны увеличить на единицу число, которое мы получили через getMonth().
Этот сценарий не проверяет, является ли число минут меньше чем 10. Это означает, что Вы можете получить время, которое выглядит следующим образом: 14:3 которое фактически означает 14:03. Мы видим в следующем сценарии, как решить эту проблему.

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



Мы используем метод setTimeout() для установки времени и датируемся каждую секунду. Так что мы создаем каждую секунду новый объект даты с текущим временем.
Вы можете видеть, что функция Clock() вызваны с обработчиком события onLoad в теге <body>. В теле нашей HTML-страницы мы имеем два текстовых поля ввода. Функция Clock() пишет время и дату в эти два элемента формы в правильном формате. Вы видите, что мы используем две строки timeStr и dateStr для этой цели. Мы упомянули ранее, что имеется проблема с числом минут меньше чем 10 – этот сценарий решает эту проблему посредством этой линии кода:

timeStr+= ((minutes < 10) ? “:0” : “:") + minutes;

Здесь число минут прибавляется к строке timeStr. Если минут меньше чем 10, мы должны добавить 0. Следующая линия кода может выглядеть немного странной для Вас. Вы могли бы записать её в более привычном для вас виде, так как представлено ниже:

if (minutes < 10) timeStr+= “:0” + minutes
else timeStr+= “:" + minutes;