Объект Date в JavaScript
При работе с датой и временем в JavaScript используется объект Date. Думаю, что не надо объяснять, как часто приходится работать с датой и временем. И в этой статье Вы узнаете, как это делать в JavaScript.
Начнём, по традиции, с конструкторов объекта Date. Их целых четыре. Первый конструктор без параметров, и он возвращает текущие время и дату:
var date = new Date();
document.write(date);
В результате, Вы увидите что-то в этом духе: "Thu Oct 14 2010 11:42:06 GMT+0400".
Второй конструктор объекта Date - это конструктор с одним параметром. Этот параметр содержит количество миллисекунд прошедших с 01.01.1970 (зарождение эпохи Unix). Например, так:
var date = new Date(135253235);
document.write(date);
В результате Вы увидите следующее: "Fri Jan 02 1970 16:34:13 GMT+0300".
Следующий конструктор позволяет создать объект Date с заданием следующих параметров: года, месяца и числа:
var date = new Date(2010, 0, 12);
document.write(date);
Результат: "Tue Jan 12 2010 00:00:00 GMT+0300". Также заметьте, что 0-ой месяц - это январь, а 11-ый - это декабрь.
И последний конструктор класса Date в JavaScript позволяет создать объект Date со всеми параметрами даты и времени: год, месяц, число, часы, минуты и секунды.
var date = new Date(2010, 0, 12, 23, 45, 12);
document.write(date);
Получится вот такая строка: "Tue Jan 12 2010 23:45:11 GMT+0300". Вот и все конструкторы объекта Date в JavaScript, которые нам предоставили разработчики.
Особых свойств у класса Date нет, поэтому сразу переходим к методам. Начнём сразу с группы методов, которые работают совершенно одинаково, но каждый из них возвращает свой элемент даты и времени:
var date = new Date();
document.write("Год - " + date.getFullYear() + "<br />");
document.write("Месяц - " + date.getMonth() + "<br />");
document.write("Число - " + date.getDate() + "<br />");
document.write("День недели - " + date.getDay() + "<br />");
document.write("Час - " + date.getHours() + "<br />");
document.write("Минута - " + date.getMinutes() + "<br />");
document.write("Секунда - " + date.getSeconds() + "<br />");
document.write("Миллисекунда - " + date.getMilliseconds() + "<br />");
document.write("Количество миллисекунд прошедших с 01.01.1970 - " + date.getTime() + "<br />");
Запустив данный скрипт, Вы мгновенно поймёте, что каждый из этих методов делает. Единственное, что хочется заметить, что нумерация дней недели начинается также с нуля. Причём воскресенье имеет индекс 0, а суббота - 6.
Есть аналогичные методы, но показывающие дату и время по Гринвичу. Давайте напишем такой код:
var date = new Date();
document.write("Год - " + date.getUTCFullYear() + "<br />");
document.write("Месяц - " + date.getUTCMonth() + "<br />");
document.write("Число - " + date.getUTCDate() + "<br />");
document.write("День недели - " + date.getUTCDay() + "<br />");
document.write("Час - " + date.getUTCHours() + "<br />");
document.write("Минута - " + date.getUTCMinutes() + "<br />");
document.write("Секунда - " + date.getUTCSeconds() + "<br />");
document.write("Миллисекунда - " + date.getUTCMilliseconds() + "<br />");
Запустив этот скрипт, Вы узнаете текущие дату и время на Гринвиче.
Противоположные методам get() являются методы - set(). Если первые возвращают определённые значения, то последние, наоборот, их изменяют. Собственно, данный скрипт я мог бы не приводить, но, чтобы не осталось никаких вопросов, давайте это сделаю:
var date = new Date();
date.setFullYear(1990);
date.setMonth(11);
date.setDate(15);
date.setHours(9);
date.setMinutes(20);
date.setSeconds(0);
date.setMilliseconds(10);
document.write(date);
Надеюсь, Вы обратили внимание, что метода setDay() не существует. Это говорит о том, что день недели подбирается в зависимости от года, месяца и числа.
Существует также аналогичные методы для Гринвича. Только добавляется приставка UTC, например, для изменения месяца используется метод setUTCMonth().
И последний метод - это setTime(). Принимает в качестве параметра число миллисекунд прошедших с 01.01.1970:
date.setTime(39293012);
document.write(date);
В результате Вы увидите вот это: "Thu Jan 01 1970 13:54:53 GMT+0300".
Вот и все конструкторы и методы объекта Date в JavaScript.
-
- Михаил Русаков
Комментарии (8):
Последние два метода (set и setTime) не работают. Причину не понимаю! :)
Ответить
Метода set вообще не существует (откуда Вы вообще его взяли?). А метод setTime() прекрасно работает, только что проверил.
Ответить
Чтобы минуты, секунды, часы и прочее обновлялось, нужно обновлять страницу! А чтобы они обновлялись без обновления страницы, нужен уже PHP код! Так?
Ответить
PHP здесь вообще не причём, этот как раз с ним надо будет каждый раз обновлять страницу. А вот на JS это можно сделать. Вот нечто подобное: http://myrusakov.ru/skolko-vremeni-vy-proveli-na-stranice.html Добавлю, что ключевым элементом для создания этого является таймер, который будет вызывать функцию, например, каждую секунду и обновлять время.
Ответить
Спасибо!
Ответить
Михаил, а как вставить дату в статью и зафиксировать ее? Чтобы при обновлении страницы она не изменялась?
Ответить
Здравствуйте, Анатолий. Используйте AJAX, с помощью данной технологии можно обновлять только определенную и нужную Вам часть страницы.
Ответить
Как модифицировать код, чтобы не Гринвич считал, а Московское время в date.getUTCHours()?
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.