Опубликован: 19.10.2006 | Уровень: для всех | Доступ: платный
Лекция 4:

Дата и время

< Лекция 3 || Лекция 4: 12 || Лекция 5 >
Аннотация: Функции для работы с датой и временем.

Концепция

Из Урока 1 известно, что существует такой объект, как документ. Иначе в нем ничего нельзя было бы написать.

В этом уроке будут рассмотрены семь новых методов: getDay(), getDate(), getMonth(), getYear(), getHours(), getMinutes(), и getSeconds() (получить День, Число, Месяц, Год, Час, Минуту, Секунду). Все они уже существуют, их можно взять и поместить на Web-страницу. Проблема в том, что это всего лишь методы. Для действия им нужен объект, а документ для этих целей не годится... так что необходимо создать объект.

Сценарий

<SCRIPT LANGUAGE="JavaScript">

//Сценарий выводит точную дату и время посещения страницы

Now = new Date();
document.write("Сегодня " + Now.getDate()+ 
"-" + (Now.getMonth()+1) + "-" + Now.getFullYear() 
+ ". Вы зашли на Web-страницу ровно в: " + Now.getHours() + 
":" + Now.getMinutes() + " и " + Now.getSeconds() + 
" секунд.")

</SCRIPT>

Кстати, строка document.write не должна прерываться. Она разбита на несколько строк, чтобы удобнее было читать.

Результат работы сценария

Сегодня 18-7-2006. Вы зашли на эту Web-страницу ровно в: 8:42 и 3 секунд.

Разбор сценария

Не пугайтесь размера сценария, скоро все будет понятно. Для начала еще раз напомним о формате сценария. Строка document.write уходит далеко за границы экрана. Эту форму необходимо сохранить. Если разбить эту строку на две, браузер выдаст сообщение об ошибке.

Что означает // ?

Постепенно, по мере чтения учебника вы будете узнавать все больше новых команд. Это одна из них. Двойная косая черта указывает на комментарий внутри сценария. Она означает, что следующий за ней текст не будет использоваться в процессе. Количество строк комментария ничем не ограничено, надо только помнить, что каждая строка должна начинаться с двойной косой черты //.

Методы Date (Дата) и Time (Время)

Если посмотреть сценарий, то можно видеть, что результат создается командой записи в документ числа, месяца, года, часа, минуты и секунды. Несколько дополнительных слов объясняют, что вы видите.

Каждый из этих объектов был создан с помощью метода в виде getЧто-либо(). Обратите внимание на заглавную букву. Сначала "get" в нижнем регистре, потом слово с Заглавной буквы, описывающее объект.

Первое: запомните, что каждый из этих объектов является числом. Все методы возвращают только числа. Даже метод getDay(), который возвращает день недели, выражается числом от единицы до семи.

Начнем с месяца. Как уже говорилось ранее, getMonth() — это метод, отвечающий за месяц. Теперь задумаемся о том, на какой объект воздействует метод getMonth(). Т.е. теперь необходимо определиться, методом какого объекта является getMonth().

(Помните из Урока 1? Метод дейcтвует на объект).

Может показаться, что getЧто-либо() — это метод объекта document. Вовсе нет. Метод документа — write. getMonth() на самом деле является методом объекта Date. Взгляните на сценарий еще раз. Объект Date задается в команде:

Now = new Date();

С этим объектом будет работать метод getMonth(). Имея дело с датой и временем, всякий раз пользуйтесь той же схемой. Прежде всего необходимо создать объект. В данном случае объект называется Now (сейчас). Видите? Между прочим, я мог бы назвать его Zork или Fred, браузеру все равно. Это не имеет значения, если объект получает оригинальное имя, которое больше нигде в JavaScript не встречается.

Если вам кажется, что кое-что тут поставлено с ног на голову, это легко понять. Такое впечатление, что следует писать new Date = Now, но это не так. Вы изучаете незнакомый язык и обязаны подчиняться его правилам.

Команда говорит: Now — это объект, который представляет new Date() (новую Дату). Дата обязательно должна быть новой. Таким способом вы будете получать новую дату каждый раз, когда заходите на страницу или обновляете ее. Без команды new дата будет оставаться статичной.

Обратите внимание и на точку с запятой в конце строки. Это действует как признак конца оператора. Она указывает на то, что строка JavaScript закончена. Без нее браузер решил бы, что команда продолжается на следующей строке. Ошибка.

Итак, у нас есть объект, на который может воздействовать метод getMonth(). Нам нужно напечатать месяц на странице, значит, где-то должна быть команда document.write(). Мы знаем также, что текст в скобках будет выведен на страницу, поэтому давайте напишем все это, следуя логике.

  1. Сначала пишем <SCRIPT LANGUAGE="javascript">.
  2. Затем вставляем комментарий о том, для чего предназначен сценарий.
  3. Прежде чем можно будет обратиться к getMonth(), необходимо создать объект. Не забудьте поставить в конце строки точку с запятой.
  4. Теперь можно поместить оператор document.write.
  5. Текст в скобках после document.write оформляем по правилам Урока 1.
    • Текст, выводимый на странице, должен быть окружен двойными кавычками (одинарные кавычки для кода HTML внутри двойных).
    • Новое правило: сочетание текста и команд требует знака "плюс" + между элементами.
    • Объект и метод разделены точкой, так что команда "поместить месяц" должна выглядеть так: Now.getMonth().
    • Новое правило: Now.getMonth() — это не текст, который должен быть виден на странице, а команда, которая указывает месяц. Поэтому не нужно ставить ее ни в какие кавычки. Обратите внимание, что к getMonth добавлена 1: (Now.getMonth()+1). Причина в том, что возвращаемые месяцы ведут отсчет от 0, поэтому для правильного вывода месяца необходимо добавлять 1. Прибавление единицы помещено в скобки ( и ), чтобы знак + не создавал путаницы со знаками +, соединяющими выводимые элементы.
  6. Заканчиваем командой </SCRIPT>.

Вот что у нас получилось:

<SCRIPT LANGUAGE="javascript">

//Сценарий выведет на странице номер месяца

Now = new Date();
document.write("Сейчас месяц " + (Now.getMonth()+1))

</SCRIPT>

Посмотрите на полный сценарий еще раз. Длинная строка текста уже не кажется такой страшной. Это просто объект Now и следующий после него метод getЧто-либо(). Я разделил элементы даты дефисом. Помните, что дефис должен быть виден на странице, поэтому его следует ставить в кавычки. Все части связаны между собой знаком плюса +.

< Лекция 3 || Лекция 4: 12 || Лекция 5 >
Елена Сапегова
Елена Сапегова

После прохождения теоретической части пришло письмо об окончании теоретической части курса, будет ли практическая часть?

Эдуард Семынин
Эдуард Семынин

Здравствуйте.

Перестали быть видны лекции и тесты практикума по программированию на JavaScript. Уже второй день из моего аккаунта виден лишь план занятий. В чем может быть проблема?

 

Степан Дегтярик
Степан Дегтярик
Беларусь, Минск
Никита Базыленко
Никита Базыленко
Беларусь, МИНСК