Объект Date

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

Объект Date позволяет работать не только с текущей датой, но и с любой датой вообще. Поэтому он не относится к статическим объектам. Самое важное, что следует помнить при работе с текущей датой и временем — это то, что они берутся из показаний часов, установленных на компьютере пользователя, а не пересылаются с сервера. А это означает, что они вполне могут не соответствовать действительности.

Для создания объекта Date можно воспользоваться одним из следующих способов.

  • Создать объект, содержащий текущую дату и время:

var date = new Date()

  • Получить объект, содержащий дату 1 января 2005 года и время: 0:00:00.:

var date = new Date (2005, 0, 1)

  • Создать объект, содержащий дату 7 декабря 2006 года и время: 18:30:10.

var date = new Date(2006, 11, 7, 18, 30, 10)

Все операции с датами и временем производятся с помощью двух групп методов объекта Date. Первая группа служит для получения информации о дате и времени — ее методы начинаются со слова get и их использование никак не влияет на содержимое объекта Date. Вторая группа методов служит для внесения изменений в экземпляр объекта Date. Методы этой группы начинаются со слова set.

Результатами всех методов, извлекающих информацию из объекта Date, являются числа. Поэтому при их использовании следует помнить о нумерации месяцев и дней недели в датах языка JavaScript. Январю соответствует номер месяца 0, а декабрю — 11. Воскресенью соответствует номер дня недели 0, понедельнику — 1, а субботе — 6. Для того чтобы вывести дату с использованием названий дней недели и месяцев, можно применить способ, представленный в листинге.

Листинг: Отображение в браузере русских названий для дней недели и месяцев

<HTML> <HEAD>

<TITLE>Вывод даты по-русски</TITLE> </HEAD> <BODY>

<SCRIPT>

function dateString(date) {

var days = new Array('воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота')

var months = new Array ('января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября ', 'ноября','декабря')

var str = days [date.getDay()]+', '

str += date.getDate() +' '+ months [date.getMonth()] + ' '

str += date.getFullYear() + ' года.'

return str

}

var today = new Date ()

document.write('Сейчас ', dateString(today))

</SCRIPT>

</BODY>

<HTML>

Результат листинга: Сегодняпонедельник, 5 июня 2006 года

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

  • getFullYear() — возвращает год для выбранной даты по местному времени (значение представляется в диапазоне от 1000 до 9999). Существует также другой метод для определения года — getYear(). Он возвращает сокращенную запись года в виде двух последних цифр. Однако для дат начиная с 2000 года использовать данный метод не рекомендуется, поскольку во многих браузерах он работает неправильно.
  • getMonth() — возвращает месяц для выбранной даты по местному времени. Результат — число от 0 до 11.
  • getDate() — возвращает день месяца (число) для выбранной даты по местному времени. Результат — число от 1 до 31.
  • getDay() — возвращает день недели для выбранной даты по местному времени. Результат — число от 0 до 6.
  • getHours() — возвращает час в 24-часовом формате для выбранной даты по местному времени. Результат — число от 0 до 23.
  • getMinutes() — возвращает минуты для выбранной даты по местному времени. Результат — число от 0 до 59.
  • getSeconds() — возвращает секунды для выбранной даты по местному времени. Результат — число от 0 до 59.
  • getMilliseconds() — возвращает миллисекунды для выбранной даты по местному времени. Результат — число от 0 до 999.
  • getTimezoneOffset() — определяет сдвиг в минутах локального времени на компьютере пользователя относительно времени UTC (см. ниже врезку "Временные зоны и GMT").
  • getTime() — возвращает числовое значение, соответствующее выбранной дате по местному времени — количество миллисекунд, прошедшее от 0:00:00 UTC 1 января 1970 года до заданной даты. Данное значение само по себе никакой ценности не представляет, но может использоваться для внесения относительных изменений в дату, вычисления промежутков между двумя датами и т.п. При применении данного метода полезными могут оказаться следующие числа, соответствующие количеству миллисекунд в том или ином промежутке времени:
      • 1 секунда = 1000;
      • 1 минута = 60 000;
      • 1 час = 3 600000;
      • 1 сутки = 86 400 000;
      • 1 год (365 дней) = 31 536 000 000.

В качестве примера применения метода getDate() можно привести сценарий, вычисляющий, сколько времени осталось до Нового года (Листинг 2).

Листинг 2. Определение времени, оставшегося до Нового года

<HTML> <HEAD>

<TITLE>Сколько осталось до Нового года</TITLE> </HEAD>

<BODY>

<SCRIPT>

var today = new Date()

var newYearDay = new Date(today.getFullYear()+1, 0, 1)

var day = 86400000

var hour = 3600000

var minute = 60000

var time = newYearDay.getTime() - today.getTime()

var days = Math.floor(time/day)

var hours = Math.floor((time - days*day)/hour)

var minutes = Math.floor((time - days*day - hours*hour)/minute)

var str = days + ' дней, '+ hours + ' часов, ' + minutes + ' минут. '

document.write(' До Нового года осталось ', str)

</SCRIPT> </BODY>

</HTML>

Результат листинга: До Нового года осталось 226 дней. 9 часов, 44 минут

Если методы, названия которых начинаются с get, предназначены для извлечения элементов даты и времени, то методы, начинающиеся с set, служат для поэлементной установки даты и времени или изменения их отдельных элементов. Этот набор методов, предназначенный для внесения изменений в объект Date, отличается от приведенных выше заменой приставки get на set. В работе данных методов есть одна существенная особенность. Если, например, в методе setMonth() устанавливаемое значение больше 11 или меньше 0, то вызов данного метода приведет к изменению текущего года. Номер месяца при этом будет установлен в пределах допустимых значений. Точно так же будет и с любым методом, если устанавливаемое значение выходит за пределы допустимых значений. Эту особенность можно использовать, например, для определения даты, которая через 100 дней, или дня и часа, который будет через 1000 часов (в примерах для удобства будет использоваться функция dateString, описанная в листинге 1). Объект Date имеет целый ряд методов для установки или изменения элементов даты и времени:

· setFullYear (num) — устанавливает полный год для выбранной даты по местному времени;

· setMonth (num) — задает месяц для выбранной даты по местному времени;

· setDate(num) — определяет день месяца для выбранной даты по местному времени;

var today = new Date()

today.setDate(today.getDate() + 100)

document.write('Через 100 дней будет ', dateString(today))

· setHours (num) — устанавливает часы для выбранной даты по местному времени;

var today = new Date()

today.setHours(today.getHours() + 1000)

var str = today.getHours() +': ' + today.getMinutes() + ', ' +dateString(today)

document.write('Через 1000 часов будет ', str)

· setMinutes (num) — устанавливает минуты для выбранной даты по местному времени;

· set Seconds (num) — устанавливает секунды для выбранной даты по местному времени;

· setMilliseconds (num) — устанавливает миллисекунды для выбранной даты по местному времени;

· setTime (num) — устанавливает дату и время в виде миллисекунд, прошедших от 0:00:00 UTC 1 января 1970 года до заданной даты. В основном используется вместе с методом getTime для внесения относительных изменений в дату.

Все перечисленные выше методы возвращают целые значения и не имеют входных параметров. Все эти методы, за исключением getFullYear и getMilliseconds, поя­вились в версии JavaScript 1.0, а методы getFullYear и getMilliseconds — в версии JavaScript 1.3.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: