--- title: Дата slug: Web/JavaScript/Reference/Global_Objects/Date tags: - Date - JavaScript - Reference - время translation_of: Web/JavaScript/Reference/Global_Objects/Date ---
{{JSRef("Global_Objects", "Date")}}

Сводка

Создаёт экземпляр объекта Date, представляющего собой момент времени. Объект Дата содержит число миллисекунд прошедших с 1 января 1970 г. UTC

{{EmbedInteractiveExample("pages/js/date-constructor.html")}}

Синтаксис

new Date();
new Date(value);
new Date(dateString);
new Date(year, month[, day[, hour[, minute[, second[, millisecond]]]]]);

Обратите внимание: объекты Date могут быть созданы только путём вызова функции Date в качестве конструктора: обычный вызов функции (то есть, без использования оператора {{jsxref("Operators/new", "new")}}) вернёт строку вместо объекта Date; в отличие от других объектных типов JavaScript, объекты Date не имеют литерального синтаксиса.

Параметры

Обратите внимание: если функция Date вызывается в качестве конструктора с более, чем одним аргументом, значения, большие логического диапазона (например, 13 в качестве номера месяца или 70 для значения минут) «переметнутся» на соседние значения. Например, вызов new Date(2013, 13, 1) эквивалентен вызову new Date(2014, 1, 1), оба создадут дату 2014-02-01 (нумерация месяцев начинается с нуля). Тоже самое действует и для других значений: вызов new Date(2013, 2, 1, 0, 70) эквивалентен вызову new Date(2013, 2, 1, 1, 10) — оба вызова создадут дату 2013-03-01T01:10:00.

Обратите внимание: если функция Date вызывается в качестве конструктора с более чем одним аргументом, то указанные аргументы интерпретируются как локальное время. Если аргументы указывают время в UTC, используйте new Date({{jsxref("Date.UTC()", "Date.UTC(...)")}}) с теми же аргументами.

value
Целое значение, представляющее количество миллисекунд, прошедших с 1 января 1970 00:00:00 по UTC (эпохи Unix).
dateString
Строковое значение, представляющее дату. Строка должна быть в одном из форматов, распознаваемых методом {{jsxref("Date.parse()")}} (совместимые с IETF RFC 2822 временные метки [на английском, на русском], а также версия ISO8601 [на английском, на русском]).
year
Целое значение, представляющее год. Значения с 0 по 99 отображаются на года с 1900 по 1999. Смотрите {{anch("Example:_Two_digit_years_map_to_1900_-_1999", "пример ниже")}}.
month
Целое значение, представляющее месяц, начинается с 0 для января и кончается 11 для декабря.
day
Необязательный параметр. Целое значение, представляющее день месяца.
hour
Необязательный параметр. Целое значение, представляющее часы дня.
minute
Необязательный параметр. Целое значение, представляющее минуты времени.
second
Необязательный параметр. Целое значение, представляющее секунды времени.
millisecond
Необязательный параметр. Целое значение, представляющее миллисекунды времени.

Описание

Свойства

{{jsxref("Date.prototype")}}
Позволяет добавлять свойства к объекту Date.
Date.length
Значение свойства Date.length равно 7. Это количество аргументов, обрабатываемых конструктором.
{{jsOverrides("Function", "properties", "prototype")}}

Методы

{{jsxref("Date.now()")}}
Возвращает числовое значение, соответствующее текущему времени — количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.
{{jsxref("Date.parse()")}}
Разбирает строковое представление даты и возвращает количество миллисекунд с 1 января 1970 года 00:00:00 по местному времени.
{{jsxref("Date.UTC()")}}
Принимает те же самые параметры, что и самый длинный вариант конструктора (то есть, от 2 до 7) и возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.
{{jsOverrides("Function", "Methods", "now", "parse", "UTC")}}

Экземпляры объекта Date

Все экземпляры объекта Date наследуются от {{jsxref("Date.prototype")}}. Объект прототипа конструктора Date может быть изменён, чтобы затронуть все экземпляры объекта Date.

Методы

{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Date/prototype', 'Methods')}}

Примеры

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

Следующие примеры показывают несколько способов создания дат в JavaScript:

Обратите внимание: разбор строкового представления дат с помощью конструктора Date (так же как эквивалентный ему метод Date.parse) может иметь различия и несоответствия в браузерах.

var today = new Date();
var birthday = new Date('December 17, 1995 03:24:00');
var birthday = new Date('1995-12-17T03:24:00');
var birthday = new Date(1995, 11, 17);
var birthday = new Date(1995, 11, 17, 3, 24, 0);

Пример: двухциферный год отображается на 1900 - 1999 года

Для того, чтобы создать и получить даты между 0 и 99 годом, нужно использовать методы {{jsxref("Date.prototype.setFullYear()")}} и {{jsxref("Date.prototype.getFullYear()")}}.

var date = new Date(98, 1); // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)

// Устаревший метод, 98 отображается на 1998 год
date.setYear(98);           // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)

date.setFullYear(98);       // Sat Feb 01 0098 00:00:00 GMT+0000 (BST)

Пример: вычисление затраченного времени

Следующие примеры показывают, как определить разницу во времени между двумя датами в JavaScript:

// Используя объекты Date
var start = Date.now();

// Событие, для которого замеряется время, происходит тут:
doSomethingForALongTime();
var end = Date.now();
var elapsed = end - start; // затраченное время в миллисекундах
// Используя встроенные методы
var start = new Date();

// Событие, для которого замеряется время, происходит тут:
doSomethingForALongTime();
var end = new Date();
var elapsed = end.getTime() - start.getTime(); // затраченное время в миллисекундах
// Проверяет функцию и возвращает её возвращаемое значение
function printElapsedTime(fTest) {
  var nStartTime = Date.now(),
      vReturn = fTest(),
      nEndTime = Date.now();

  console.log('Затраченное время: ' + String(nEndTime - nStartTime) + ' миллисекунд');
  return vReturn;
}

yourFunctionReturn = printElapsedTime(yourFunction);

Обратите внимание: в браузерах, поддерживающих высокое временное разрешение с помощью {{domxref("window.performance", "API замера производительности", "", 1)}}, метод {{domxref("Performance.now()")}} может обеспечить более надёжные и точные замеры затраченного времени, нежели метод {{jsxref("Date.now()")}}.

Получить количество секунд с начала эпохи Unix

var seconds = Math.floor(Date.now() / 1000);

В этом случае важно возвращать только целое число (так что простое деление не подойдёт), а также возвращать только фактически прошедшие секунды (поэтому этот код использует {{jsxref ("Math.floor ()")}} а не {{jsxref ("Math.round ()")}}).

Спецификации

{{Specifications}}

Совместимость с браузерами

{{Compat}}