Объект Date в JavaScript

Объект-конструктор Date используется для создания объекта времени. Используя объект класса Date, можно задать любое время или получить текущее для данного момента выполнения скрипта. Время можно представить в различных форматах, но для JavaScript время - это количество миллисекунд, прошедших с полуночи 1 января 1970 года по Гринвичу (время зарождения эпохи Unix).

Конструктор Date имеет несколько форматов задания времени в зависимости от переданных аргументов.

new Date()
Если Date вызывается без аргументов, то создаётся объект с текущим временем.
alert(new Date()); /* покажет текущее время */
new Date(дата)
Если передаётся один строковый аргумент, то он интерпретируется как дата в строковом формате.
alert(new Date('Dec 13, 1932')); /* Tue Dec 13 1932 00:00:00 GMT+0000 */
new Date(timestamp)
Если передаётся один числовой аргумент, то он интерпретируется как количество миллисекунд, прошедших с полуночи 1 января 1970 года по Гринвичу.
alert(new Date(3000)); /* Thu Jan 01 1970 00:00:03 GMT+0000 */
new Date(год, месяц[, день_месяца[, часы[, минуты[, секунды[, миллисекунды]]]]])
Если объекту Date передаётся от 2 до 7 целых чисел, то они интерпретируются как непосредственное задание времени. Аргументы последовательно задают год, месяц, день месяца, часы, минуты, секунды и миллисекунды. Примечания:
  • Отсчёт месяцев начинается с 0.
  • Если указаны не все аргументы, то пропущенные аргументы времени устанавливаются равными 0, а день месяца устанавливается равным 1.
  • Данный формат создаёт объект локального (местного) времени, то есть в том часовом поясе, который установлен операционной системой пользователя.
  • Если переданные параметры выходят за допустимый диапазон значений, то JavaScript автоматически преобразует их в допустимые диапазоны. Например, если передать 65 секунд, то JavaScript представит их как 1 минуту и 5 секунд.
alert(new Date(1996, 11)); /* Sun Dec 01 1996 00:00:00 GMT+0000 */
alert(new Date(1996, 11, 20, 13, 0, 1800)); /* Fri Dec 20 1996 13:30:00 GMT+0000 (1800 секунд = 30 минут) */
alert(new Date(1996, 11, 20, 13, 23, 40, 300)); /* Fri Dec 20 1996 13:23:40.300 GMT+0000 */
Приведённый выше пример при выполнении в московском часовом поясе вместо GMT+0000 покажет GMT+0300.

Свойства объекта Date

length

Свойство length всегда имеет значение 7. Это количество принимаемых аргументов.

alert(Date.length); // 7

prototype

Свойство prototype наследуется из класса Object.

var date = new Date();
Date.prototype.prop = 'новое свойство';
alert(date.prop); /* 'новое свойство' */

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

now()

Метод now() возвращает количество миллисекунд, прошедших с полуночи 1 января 1970 года по Гринвичу. Метод не имеет аргументов.

alert(Date.now()); /* покажет количество миллисекунд */

UTC()

Метод UTC() возвращает количество миллисекунд, прошедших с полуночи 1 января 1970 года по Гринвичу до того момента времени, который передан аргументами. Этот метод принимает от 2 до 7 аргументов, которые задают определённое время: год, месяц, день месяца, часы, минуты, секунды, миллисекунды. Примечания:

  • Отсчёт месяцев начинается с 0.
  • Если указаны не все аргументы, то пропущенные аргументы времени устанавливаются равными 0, а день месяца устанавливается равным 1.
  • Переданные параметры определяют время в часовом поясе UTC+0, то есть всемирное время.
  • Если переданные параметры выходят за допустимый диапазон значений, то JavaScript автоматически преобразует их в допустимые диапазоны. Например, если передать 65 секунд, то JavaScript представит их как 1 минуту и 5 секунд.
alert(Date.UTC(1996, 11, 20, 13, 0, 1800)); // 851088600000

parse()

Метод parse() преобразует переданную дату в количество миллисекунд, прошедших с полуночи 1 января 1970 года по Гринвичу, и возвращает это значение. Метод принимает в качестве аргумента дату в строковом формате.

alert(Date.parse('Dec 13, 1932')); // -1169262000000

Свойства наследников Date

constructor

Свойство constructor наследуется из класса Object.

var date = new Date();
alert(date.constructor); /* 'function Date() {[native code]}' */

Методы наследников Date

Получение отдельных значений

Метод Описание
getFullYear() Год из указанной даты по местному времени.
getMonth() Месяц из указанной даты по местному времени. Число от 0 до 11.
getDate() День месяца из указанной даты по местному времени. Число от 1 до 31.
getDay() День недели из указанной даты по местному времени. Число от 0 до 6. (0 - воскресенье).
getHours() Часы из указанной даты по местному времени. Число от 0 до 23.
getMinutes() Минуты из указанной даты по местному времени. Число от 0 до 59.
getSeconds() Секунды из указанной даты по местному времени. Число от 0 до 59.
getMilliseconds() Миллисекунды из указанной даты по местному времени. Число от 0 до 999.
getUTCFullYear() Год из указанной даты по всемирному времени.
getUTCMonth() Месяц из указанной даты по всемирному времени. Число от 0 до 11.
getUTCDate() День месяца из указанной даты по всемирному времени. Число от 1 до 31.
getUTCDay() День недели из указанной даты по всемирному времени. Число от 0 до 6. (0 - воскресенье).
getUTCHours() Часы из указанной даты по всемирному времени. Число от 0 до 23.
getUTCMinutes() Минуты из указанной даты по всемирному времени. Число от 0 до 59.
getUTCSeconds() Секунды из указанной даты по всемирному времени. Число от 0 до 59.
getUTCMilliseconds() Миллисекунды из указанной даты по всемирному времени. Число от 0 до 999.
getTime() Количество миллисекунд, прошедших с полуночи 1 января 1970 года по Гринвичу до указанной даты.
getTimezoneOffset() Смещение местного времени от всемирного (UTC+0) в минутах. Например, для часового пояса UTC+3 смещение равно -180 минут.

Изменение отдельных значений

Метод Описание
setFullYear() Год из указанной даты по местному времени. Дополнительно можно указать месяц и день месяца.
setMonth() Месяц из указанной даты по местному времени. Дополнительно можно указать день месяца.
setDate() День месяца из указанной даты по местному времени.
setHours() Часы из указанной даты по местному времени. Дополнительно можно указать минуты, секунды и миллисекунды.
setMinutes() Минуты из указанной даты по местному времени. Дополнительно можно указать секунды и миллисекунды.
setSeconds() Секунды из указанной даты по местному времени. Дополнительно можно указать миллисекунды.
setMilliseconds() Миллисекунды из указанной даты по местному времени.
setUTCFullYear() Год из указанной даты по всемирному времени. Дополнительно можно указать месяц и день месяца.
setUTCMonth() Месяц из указанной даты по всемирному времени. Дополнительно можно указать день месяца.
setUTCDate() День месяца из указанной даты по всемирному времени.
setUTCHours() Часы из указанной даты по всемирному времени. Дополнительно можно указать минуты, секунды и миллисекунды.
setUTCMinutes() Минуты из указанной даты по всемирному времени. Дополнительно можно указать секунды и миллисекунды.
setUTCSeconds() Секунды из указанной даты по всемирному времени. Дополнительно можно указать миллисекунды.
setUTCMilliseconds() Миллисекунды из указанной даты по всемирному времени.
setTime() Количество миллисекунд, прошедших с полуночи 1 января 1970 года по Гринвичу до указанной даты.

Преобразование в строку

Метод Описание
toString() Возвращает строковое представление объекта. Вызывается всегда, когда объект должен быть представлен в виде строкового значения.
alert(new Date(123456789)); /* Fri Jan 02 1970 13:17:36 GMT+0300 */
toUTCString() Возвращает строковое представление объекта по всемирному времени (UTC+0).
var date = new Date('Jan 02 1970 10:00:00 GMT+0300');
alert(date.toUTCString()); /* Fri, 02 Jan 1970 07:00:00 GMT */
toISOString() Возвращает строковое представление объекта по всемирному времени (UTC+0) в формате ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ).
var date = new Date('Jan 02 1970 10:00:00 GMT+0300');
alert(date.toISOString()); /* 1970-01-02T07:00:00.000Z */
toDateString() Возвращает строковое представление объекта, содержащее только дату.
var date = new Date('Jan 02 1970 10:00:00 GMT+0300');
alert(date.toDateString()); /* Fri Jan 02 1970 */
toTimeString() Возвращает строковое представление объекта, содержащее только время.
var date = new Date('Jan 02 1970 10:00:00 GMT+0300');
alert(date.toTimeString()); /* 10:00:00 GMT+0300 */