8c1dea14

Объект Date


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


JavaScript обрабатывает даты аналогично Java. Эти два языка имеют много аналогичных date-методов и оба хранят даты как количество миллисекунд, прошедших после 1 января 1970 года, 00:00:00.

Объект Date имеет диапазон значений от -100,000,000 до 100,000,000 дней в обе стороны от 01 января 1970 года UTC (Всемирного Времени).

Для создания Date-объекта:

dateObjectName = new Date([parameters])

где dateObjectName это имя создаваемого Date-объекта; это может быть новый объект или свойство существующего объекта.

Параметры/parameters в этом синтаксисе могут быть:


  • пустыми: вводятся текущие время и дата. Например, today = new Date();

  • строкой, представляющей дату в следующем формате: "месяц день, год  час:минуты:секунды." Например, Xmas95 = new Date("December 25, 1995 13:30:00"). Если Вы пропустите часы, минуты или секунды, значение будет установлено в нуль.
  • набором целочисленных значений для года, месяца и дня. Например, Xmas95 = new Date(1995,11,25). Набором значений для года, месяца, дня, часов, минут и секунд. Например, Xmas95 = new Date(1995,11,25,9,30,0).

  • JavaScript 1.2 и ранее.

    Объект Date ведёт себя так:

  • Даты до 1970 не допускаются.

  • JavaScript зависит от специфики поведения даты на конкретной платформе; поведение Date-объекта варьируется от платформы к платформе.


  • Методы Объекта Date

    Методы объекта Date для работы с датами и временем подразделяются на следующие категории:

  • "set" методы для установки значений даты времени в Date-объектах;



  • "get"  методы для получения значений даты времени из Date-объектов;

  • "to" методы для возвращения строковых значений из Date-объектов;

  • методы parse и UTC для разбора Date-строк.
  • С помощью методов "get" и "set" Вы можете по отдельности получать и устанавливать значения секунд, минут, часа, дня месяца, дня недели, месяца и года. Имеется метод getDay, возвращающий день недели, но отсутствует парный метод setDay, поскольку день недели устанавливается автоматически. Эти методы используют целые числа для представления своих значений:


  • Секунд и минут: от 0 до 59

  • Часа: от 0 до 23

  • Дня недели: от 0 (воскресенье) до 6 (суббота)

  • Даты: от 1 до 31 (день месяца)

  • Месяца: от 0 (январь) до 11 (декабрь)

  • Года: годы после 1900


  • Например, Вы определили следующую дату:

    Xmas95 = new Date("December 25, 1995")

    Тогда Xmas95.getMonth() возвратит 11, а Xmas95.getFullYear() возвратит 1995.

    Методы getTime и setTime используются при сравнении дат. Метод getTime возвращает количество миллисекунд, прошедших после 1 января 1970 года, 00:00:00, для Date-объекта.

    Например, следующий код выводит количество дней, оставшихся до конца текущего года:

    today = new Date()

    endYear = new Date(1995,11,31,23,59,59,999) // Устанавливает день и месяц

    endYear.setFullYear(today.getFullYear()) // Устанавливает год в текущее значение

    msPerDay = 24 * 60 * 60 * 1000 // Количество миллисекунд в день

    daysLeft = (endYear.getTime() - today.getTime()) / msPerDay

    daysLeft = Math.round(daysLeft) //возвращает количество оставшихся в этом году дней

    Этот пример создаёт Date-объект по имени today, содержащий текущую дату. Затем создаётся Date-объект endYear и в него устанавливается текущее значение года. Затем, путём использования количества миллисекунд в день, вычисляется количество дней от сегодняшнего числа до до endYear через использование метода getTime и оно округляется до целого количества дней.

    Метод parse применяется для присвоения значений date-строк существующим Date-объектам. Например, следующий код использует методы parse и setTime для присвоения значения даты объекту IPOdate:

    IPOdate = new Date()

    IPOdate.setTime(Date.parse("Aug 9, 1995"))

    Использование Объекта Date: Пример


    В этом примере функция JSClock() возвращает время в формате электронного циферблата:

    function JSClock() {

       var time = new Date()

       var hour = time.getHours()

       var minute = time.getMinutes()

       var second = time.getSeconds()

       var temp = "" + ((hour > 12) ? hour - 12 : hour)



       if (hour == 0)

          temp = "12";

       temp += ((minute < 10) ? ":0" : ":") + minute

       temp += ((second < 10) ? ":0" : ":") + second

       temp += (hour >= 12) ? " P.M." : " A.M."

       return temp

    }

    Функция JSClock сначала создаёт новый Date-объект time; поскольку аргументы не заданы, time создаётся с текущими датой и временем. Затем вызываются методы getHours, getMinutes и getSeconds, присваивающие текущие значения часа, минут и секунд переменным hour, minute и second.

    Следующие 4 оператора строят строковое значение на базе time. Первый оператор создаёт переменную temp, присваивая её значение путём использования условного выражения; если hour больше 12, (hour - 12), иначе просто hour, если только hour не 0, тогда он становится 12.

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

    Наконец, условное выражение присоединяет "PM" к temp, если hour равен 12 или больше; иначе присоединяется "AM".




    Содержание раздела