--- title: Дата slug: Web/JavaScript/Reference/Global_Objects/Date tags: - Date - JavaScript - Reference - время translation_of: Web/JavaScript/Reference/Global_Objects/Date ---
Создаёт экземпляр объекта Date
, представляющего собой момент времени. Объект Дата содержит число миллисекунд прошедших с 1 января 1970 г. UTC
{{EmbedInteractiveExample("pages/js/date-constructor.html")}}
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
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
dateString
year
month
day
hour
minute
second
millisecond
Date
для текущих даты и времени, согласно системным настройкам.Date
варьируется от -100 000 000 до 100 000 000 дней относительно 1 января 1970 года по UTC.Date
обеспечивает универсальное поведение на всех платформах. Значение времени может передаваться между системами для представления одинакового момента во времени и, если оно используется для создания локального объекта даты, будет отражать местный эквивалент времени.Date
поддерживает несколько методов для работы с UTC (всемирным координированным временем), наряду с методами работы с местным временем. UTC, также известное как среднее время по Гринвичу (GMT), ссылается на время, установленное Всемирным стандартом времени. Местное время — это время на компьютере, на котором выполняется JavaScript.Date
в качестве функции (то есть, без использования оператора {{jsxref("Operators/new", "new")}}) вернёт строку, представляющую текущие дату и время.Date
.Date.length
Date.length
равно 7. Это количество аргументов, обрабатываемых конструктором.Date
Все экземпляры объекта Date
наследуются от {{jsxref("Date.prototype")}}. Объект прототипа конструктора Date
может быть изменён, чтобы затронуть все экземпляры объекта Date
.
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);
Для того, чтобы создать и получить даты между 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()")}}.
var seconds = Math.floor(Date.now() / 1000);
В этом случае важно возвращать только целое число (так что простое деление не подойдёт), а также возвращать только фактически прошедшие секунды (поэтому этот код использует {{jsxref ("Math.floor ()")}} а не {{jsxref ("Math.round ()")}}).
{{Compat}}