Javascript получить текущую дату и время. Методы объекта Date


Для работы с датой и временем в JavaScript существует специальный объект - Date. Этот объект поддерживается практически всем версиями JavaScript, а зачит им можно пользоваться не оглядываясь на проблемы совместимости.

Дата и время в объекте Date хранятся не в явном виде, а как и в большинстве языков программирования - в виде количества миллисекунд, прошедших с дня рождения Unix, т.е. с 0 часов 0 минут 1 января 1970 года. Отличительная особенность объекта Date - все диапазонные значения имеют индексы, начинающиеся с нуля. Это означает, что январь будет иметь индекс 0 (месяц №0), а декабрь будет не двенадцатым, а одиннадцатым месяцем. То же самое справедливо и для дней недели, часов, минут и пр.

Создать объект Date очень просто:

// текущая дата-время var date = new Date(); // дата-время из строки или числа var date = new Date(дата); // дата-время из отдельных значений var date = new Date(год, месяц, день, час, минута, секунда, миллисекунда);

Объект Date обладает рядом очень полезных методов, позволяющих работать с отдельными компонентами даты-времени, а так же проводить проверку коррестности и правильный вывод даты в заданном формате.

Методы получения компонентов даты-времени
getFullYear Возвращает год (например, 2011).
getYear Возвращает год. Назначение метода getYear аналогично назначению getFullYear, однако данный метод является устаревшим и не рекомендуются к использованию, т.к. результаты его работы не однозначны: для диапазона дат от 1900 до 1999 года метод возвращает номер года в столетии (двузначный, например 77), а для дат за пределами этого диапазона - возвращается полное значение (четырёхзначное, например 2009).
getMonth Возвращает месяц.
getDate Возвращает день месяца (число в месяце).
getHours Возвращает час.
getMinutes Возвращает минуту.
getSeconds Возвращает секунду.
getMilliseconds Возвращает миллисекунду.
getDay Возвращает номер деня недели.
getTime Возвращает миллисекундное смещение, хранимое объектом.
Методы изменения компонентов даты-времени
setFullYear Устанавливает год.
setYear Устанавливает год. Назначение метода setYear аналогично назначению setFullYear, однако данный метод является устаревшим и не рекомендуются к использованию (так же как и метод getYear).
setMonth Устанавливает месяц.
setDate Устанавливает дату в месяце (день месяца).
setHours Устанавливает час.
setMinutes Устанавливает минуту.
setSeconds Устанавливает секунду.
setMilliseconds Устанавливает миллисекунду.
setTime Устанавливает миллисекундное смещение относительно 00:00:00 01.01.1970
Фунции форматирования и вывода даты-времени
toString Возвращает строковое представление даты и времени.
toUTCString Возвращает строковое представление даты и времени с пересчётом на время UTC. Формат возвращаемой строки учитывает все интернет-стандарты.
toGMTString Возвращает строковое представление даты и времени с пересчётом на время GMT (время по Гринвичу). Формат возвращаемой строки учитывает все интернет-стандарты.
toLocaleString Аналог toString, но возвращает строковое представление даты и времени, отформатированное в соответствии с настройками локализации данного пользователя.
toTimeString Возвращает строковое представление времени (строка содержит только время).
toDateString Возвращает строковое представление даты (строка содержит только дату).
toLocaleTimeString Аналог toTimeString, но возвращает строковое представление времени, отформатированное в соответствии с настройками локализации пользователя.
toLocaleDateString Аналог toDateString, но возвращает строковое представление даты, отформатированное в соответствии с настройками локализации пользователя.
Дополнительные функции
getTimezoneOffset Возвращает смещение локального времени на компьютере пользователя относительно времени UTC. Смещение возвращается в минутах.
parse Функция позволяет проверить корректность даты-времени, записанных в виде строки. Если строка корректная - сразу будет создан объект Date.

Так же объект Date содержит ряд методов для работы с UTC-датами. Эти функции полностью аналогичны уже рассмотреным, но содержат в имени префикс "UTC" и работают только с "универсальным" временем: getUTCSeconds, setUTCFullYear и т.д.

Рассмотрим пример работы с датами:

var tmp = new Date(now.getTime()); var arrNames = new Array("Сегодня", "Завтра", "Через 1 год 6 месяцев 15 дней"); var arrNormal = new Array(); var arrLocal = new Array(); var arrUTC = new Array(); // сейчас arrLocal = tmp.toLocaleString(); arrNormal = tmp.toString(); arrUTC = tmp.toUTCString(); // завтра tmp.setDate(tmp.getDate() + 1); arrLocal = tmp.toLocaleString(); arrNormal = tmp.toString(); arrUTC = tmp.toUTCString(); // через 1 год 6 месяцев 15 дней tmp.setFullYear(tmp.getFullYear() + 1); tmp.setMonth(tmp.getMonth() + 6); tmp.setDate(tmp.getDate() + 15); arrLocal = tmp.toLocaleString(); arrNormal = tmp.toString(); arrUTC = tmp.toUTCString(); // выводим результаты в таблицу document.write("

" + "" + "" + "" + ""); for (i = 0; i < 3; i++) { document.write("" + " + " + " + " + ""); } document.write("
ДатаЛокализованнаяНе локализованнаяUTC
" + arrNames[i] + "" + arrLocal[i] + "" + arrNormal[i] + "" + arrUTC[i] + "
");

А вот результат работы этого скрипта:


Как видите, представление даты существенно отличается в зависимости от используемого формата. Поэтому при работе с датой-временем надо придерживаться нескольких простых правил:

1. По возможности пользоваться UTC или GMT-форматами. Особенно это важно при создани распределённых решений (например, клиентов платёжных систем). Использование общего опорного времени даст вам гарантии (пусть и не стопроцентные), что и вы и ваш удалённый партнёр будете одинаково интерпретировать получаемые данные.

2. Локализованные дату и время имеет смысл использовать только при выводе их пользователю. Во всех остальных случаях от локализованных данных лучше отказаться.

3. Если всё же приходится использовать локальные дату и время - не забывайте учитывать смещение локального времени относительно опорного (UTC или GMT).

Следование этим правилам избавит вас от большинства логических багов и недочётов, а значит сделает ваш код более стабильным и качественным.

Всем привет!
Мне часто приходится работать со статистическими данными и там очень много завязано на датах. Притом, одна и та же дата может быть использована на странице в разных форматах (например, в удобном для машины и в удобном для человека). Я думаю, что большинство из вас отлично представляют весь этот ужасающий по размерам код, который получается при использовании объекта Date.
К примеру, чтобы получить текущую дату в формате ДД.ММ.ГГГГ нам потребуется сделать следующее:
var d = new Date(), fd = d.getDate() + "." + (d.getMonth()+1) + "." + d.getFullYear();
А когда таких строк становится много? Легко ли упомнить, что в javascript месяц начинается с нуля, когда разрабатываешь не только на нем? Или то, что тут миллисекунды, а не секунды, как почти везде на бэкенде? Можно решить часть задач популярной библиотекой Moment.js , но она работает весьма медленно.
Рассматриваемая библиотека решает эти проблемы.
Если интересно, предлагаю вам прочитать этот небольшой обзор.

TempusJS во многом состоит из синтаксического сахара над объектом Date, поэтому работает очень быстро. Синтаксис же самой библиотеки весьма прост. Например, записать предыдущий пример, можно так:
var fd = tempus().format("%d.%m.%Y");
Теперь о скорости. В спойлере вы можете увидеть сравнение Tempus с Moment и нативным способом форматирования даты (см. выше):

Сравнение нативного JS, MomentJS и TempusJS

Получаем текущую дату Native JS x 2,175,575 ops/sec ±0.75% (96 runs sampled) Moment x 284,864 ops/sec ±0.85% (96 runs sampled) Tempus x 2,086,081 ops/sec ±0.73% (97 runs sampled) Форматирование Native JS x 1,637,517 ops/sec ±0.61% (100 runs sampled) Moment x 8,808 ops/sec ±1.07% (100 runs sampled) Tempus x 942,815 ops/sec ±0.68% (94 runs sampled) Автоопределение даты и парсинг Native JS x 11,204,316 ops/sec ±0.81% (88 runs sampled) Moment x 38,511 ops/sec ±1.41% (95 runs sampled) Tempus x 93,973 ops/sec ±1.06% (85 runs sampled) Парсинг даты по формату Moment x 46,293 ops/sec ±0.63% (100 runs sampled) Tempus x 109,947 ops/sec ±0.93% (99 runs sampled) Парсинг и валидация Moment x 44,588 ops/sec ±1.09% (90 runs sampled) Tempus x 103,439 ops/sec ±0.90% (94 runs sampled)
Результаты получены на моем ноутбуке в Google Chrome 30.0.1599.114. В других браузерах результаты отличаются, но соотношение остается примерно тем же.
Для тестов использовалась библиотека benchmark.js
Бенчмарки по другим функциям, вы можете увидеть .

Итак, в преимущества данной библиотеки можно записать следующее:

  • Поддерживает IE6+, Chrome, Firefox, Opera;
  • Поддерживает цепочки вызовов;
  • Месяцы могут начинаться с 1 (по умолчанию), а не нуля;
  • Миллисекунды могут быть отключены (по умолчанию) или включены;
  • Быстрая работа (Так как, во многих случаях, используется родной для браузера объект Date, реализация которого написана на более быстрых языках);
  • Поддерживает кастомные форматы и плагины
  • Валидация даты очень быстра и зависит только от устанавливающих дату функций (т.к. валидация проходит уже при занесении значений, а не высчитывается отдельно);
  • Мультиязычность и автоопределение языка пользователя.

Здесь речь пойдет только о некоторых функциях.

Форматирование и парсинг

Итак, для начала еще один пример форматирования даты. Здесь мы также используем цепочку вызовов. В конце каждой установки значения, мы получаем обратно объект TempusDate, который можем использовать дальше в цепочке. Пример:
tempus(). // получаем новую дату calc({month: -1}). // уменьшаем ее на один месяц format("%d.%m.%Y"); // Выводим в виде строки
Таким образом, мы получим этот же день, час и секунду, но месяц назад. Это бывает полезно для получения отчетов за последний месяц.

Следующий пример - парсинг даты.
// Вернет объект TempusDateс датой "2013-11-18" tempus("18.11.2013"); // Вернет объект TempusDateс датой "2013-12-12" tempus("2013-12-12", "%Y-%m-%d"));
Tempus может автоматически определять некоторые известные форматы. Также, можно указывать определенный формат, тогда парсинг будет происходить быстрее. Плюс к этому, можно задавать дату, которая будет возвращена, если парсинг завершится неудачей:
// Т.к. "123" не подходит к формату "%d.%m.%Y", то // будет возвращен объект, содержащий дату 2013-01-01 tempus("123", "%d.%m.%Y", tempus());
Список форматов по умолчанию можно посмотреть

А теперь поменяем формат уже отформатированной даты
// "2013-11-05" tempus("05.11.2013").format("%Y-%m-%d"); // Или так // "October, 12" tempus("2013-10-12 12:31:01", "%Y-%m-%d %H:%M:%S").format("%B, %d");

Также, можно использовать локализацию для форматирования. По умолчанию, будет выбран язык пользователя (берем из браузера) или язык по умолчанию, если язык пользователя не обнаружен среди доступных языков Tempus.
// Устанавливаем язык tempus.lang("ru"); // Стандартно используем format // "Ноябрь, 05" tempus(1383609600).format("%B, %d");
На данный момент языков всего два - русский и английский, так что буду рад помощи.

Валидация Валидация даты происходит следующим образом:
// Вернет false tempus("32.08.2013", "%d.%m.%Y").valid(); // Вернет true tempus("00:00 01.01.2012", "%H:%M %d.%m.%Y").valid();

В случае ошибки, можно посмотреть поля, в которых она возникла - везде, где значение не false:
// Вернет {"year":-5,"month":false,"day":false,"hours":false, // "minutes":false,"seconds":false,"milliseconds":false} tempus(). year(-5). // задаем год=-5, т.е. невалидный errors(); // получаем объект с ошибками

Диапазоны дат Иногда нам требуется получить количество лет (например, возраст), месяцев, дней и т.д. между двумя датами. Для этого мы можем использовать метод between, который находит разницу между двумя датами и возвращает в нужном формате ("year", "month", "day", "hours", "minutes", "seconds", "milliseconds").
Вот простой пример получения количества месяцев между 1 ноября 2013 года и 5 мая 2014 года:
// Вернет 6 tempus().between(tempus(), "month");
Или сколько часов осталось до нового года
tempus().between(tempus(), "hours");
В последнем примере можно заметить, что я указал только год. При установке значения массивом или объектом, нехватающие значения будут
заполнены минимальными. Список констант с минимальными значениями, вы можете увидеть в документации.

Также, мы можем изменить какую-либо дату, используя функцию calc:
// Вернет TempusDate с датой 2012-01-01 tempus().calc({year: 1, month: -4, day: -1});

Свои форматы Применяем свой формат для месяца, который может принимать значения от 1 до 12 (а не 01 до 12):
// Регистрируем новый формат tempus.registerFormat("%q", // директива - %q function(date) { // Здесь указываем функцию форматирования, т.е. что будет подставлено вместо %q return date.month(); }, function(value) { // А здесь функцию парсинга var v = Number(value); return {month: (isNaN(v) ? undefined: v) }; }, 1, // Минимальная длина, которую может принимать значение 2, // Максимальная длина "number" // Тип); // Тестируем // Вернет "01.1.2013"; tempus({year: 2013, month: 1, day: 1}).format("%d.%q.%Y"); // Вернет {"year":2013,"month":2,"day":10,"hours":0,"minutes":0,"seconds":0}; tempus("10.2.2013", "%d.%q.%Y").get();
При регистрации можно заметить, что некоторые параметры задаются отдельно, в то время, как можно было бы использовать регулярное выражение. На самом деле, там изначально оно и было, но после отказа от него, скорость выросла в несколько десятков раз.
Если вам потребуется удалить какой то формат, то используйте unregisterFormat:
tempus.unregisterFormat("%d"); // Вернет "%d.01.2013", т.к. директивы %d уже не существует. tempus.format({year: 2013, month: 1, day: 1}, "%d.%m.%Y"); Геттеры/сеттеры Можно получать/устанавливать некоторые значения, используя функции year(), month(), day(), hours(), minutes(), seconds(), milliseconds(), dayOfWeek(), utc(), timestamp() или set(). Например:
tempus(). // Получаем текущую дату year(1900). // Оставляем все как есть, но устанавливаем 1900 год leapYear(); // Проверяем, високосный ли это год, в данном случае false tempus().year(); // А так получаем текущий год в числовом виде Генерация дат Вы можете сгенерировать дату множеством способов, полный список параметров находится в документации. Здесь представлен минимальный пример.
// returns ["29.03.2013", "30.03.2013", "31.03.2013", "01.04.2013", "02.04.2013"]; tempus.generate({ dateFrom: "20130329", formatFrom: "%Y.%m.%d", dateTo: "20130402", period: {day: 1}, format: "%d.%m.%Y" });
Это может быть полезно для отображения графиков по датам и смена формата отображения прямо на клиенте, без запросов к бэкенду. Дата может быть сгенерирована как массив, так и как объекты, где в качестве ключей будут сами даты (это полезно, когда нам требуется к какой-либо дате привязать какое-либо событие, например, когда делаем свой календарь). Также, даты могут быть сгруппированы по дням, неделям, месяцам, часам, годам - по чему угодно. Это также может быть применено к календарю.Плагины Ну и последнее - плагины. Здесь мы расширяем фабрику, для генерации случайной даты. Также, нам потребуется класс TempusDate, его можно найти в tempus.classes(). Вот пример плагина:
(function (tempus) { var TempusDate = tempus.classes("TempusDate"); tempus.randomDate = function() { var date = new TempusDate(); date.year(Math.floor((Math.random()*(tempus.MAX_YEAR - tempus.MIN_YEAR)) + tempus.MIN_YEAR)). month(Math.floor((Math.random()*(tempus.MAX_MONTH - tempus.MIN_MONTH)) + tempus.MIN_MONTH)). day(Math.floor((Math.random()*(date.dayCount() - tempus.MIN_DAY)) + tempus.MIN_DAY)). hours(Math.floor((Math.random()*(tempus.MAX_HOURS - tempus.MIN_HOURS)) + tempus.MIN_HOURS)). minutes(Math.floor((Math.random()*(tempus.MAX_MINUTES - tempus.MIN_MINUTES)) + tempus.MIN_MINUTES)). seconds(Math.floor((Math.random()*(tempus.MAX_SECONDS - tempus.MIN_SECONDS)) + tempus.MIN_SECONDS)); return date; }; })(tempus); // Теперь мы можем создавать даты следующим образом var someRandomDate = tempus.randomDate();
Думаю, что таким способом можно будет удобно писать виджеты, используя связку jQuery+Tempus, Angular+Tempus и т.п.

Еще одна полезная для сайтов вещь - вставка текущей даты. Примеров скриптов даты можно найти в интернете десятки, однако многие из них, на мой взгляд, тяжеловесны и, следовательно, некрасивы. Между тем, используя стандартные средства JavaScript , вставить дату на страницу сайта можно очень просто. Я его очень часто применяю! На картинке (скриншот с действующего сайта) усадьбы «Сказка» !

Вот весь скрипт даты:

По-моему, проще некуда, достаточно красиво и понятно. Если у вас нет никакого желания изучать построение этого скрипта, то просто вставляйте его в любое место HTML-страницы и получите следующую надпись:

Еще один вариант более расширенный

//
// ]]>
// ]]>
// ]]>
// ]]>
// ]]>
! Сегодня
// + " " + d.getFullYear() + " г.");
// ]]>
// ]]>
// ]]>
// ]]>
// ]]>
// ]]>

Выглядит он так:

Сегодня

Вобщем не требуется никаких навыков, просто тупо вставляем код и все ок!

Подробнее:

Итак, начинаем с присвоения значения даты переменной d , затем создаём массивы (Array ) для дней недели (day ) и месяцев (month ), указывая их в необходимой грамматической форме: падеж, число, заглавная буква, если слово стоит в начале даты и т.п. Последняя строчка скрипта - собственно печать даты (document.write ). Здесь вы устанавливаете, что и в какой последовательности будете выводить в строке текущей даты. Компоненты отделяются друг от друга знаком + . Для ввода пробела используется конструкция " " , а для ввода буквы г (год) - конструкция " г."

Как видно из скрипта, получение данных о текущем времени выполняет элемент get . Этот метод позволяет получить следующую информацию:

  • getDate() - возвращает число от 1 до 31, представляющее число месяца;
  • getDay() - возвращает день недели как целое число от 0 (воскресенье) до 6 (суббота);
  • getMonth() - возвращает номер месяца в году;
  • getFullYear() - возвращает год. Если использовать просто getYear() , то будет выводиться текущий год минус 1900;
  • get Hours() - возвращает час суток;
  • getMinutes() - возвращает минуты как число от 0 до 59;
  • getSeconds() - возвращает число секунд от 0 до 59.

Вставлять непосредственно Java -скрипт внутрь страницы сайта не всегда удобно. Лучше поместить описание скрипта в начало страницы между тегами и задать переменную, которую будем вызывать по мере необходимости в тексте. Назовём её TODAY и определим в ней форму вывода даты аналогично вышеизложенному. Скрипт будет выглядеть следующим образом:


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


document.write(TODAY);

Если ваш сайт содержит много страниц, на которых надо показывать дату, то удобнее выделить Java -скрипт вывода даты в отдельный файл, например, data.js . Практически, это страница, состоящая из первого из описанных скриптов, то есть со строкой document.write (см. выше). Располагать её надо в том же каталоге, что и основная страница, и вызывать в месте вывода даты следующим образом:


Не забудьте проверить, чтобы файл data.js имел ту же кодировку, что и основной документ, иначе дата будет выводиться замечательными крючками, квадратиками и прочими финтифлюшками.

Замечание. Следует иметь ввиду, что описанный скрипт выводит дату, установленную на компьютере пользователя, что не всегда соответствует реальному текущему времени. Если вам необходимо показать точное время, то необходимо использовать РНР-скрипт, который будет показывать время на сервере.

Получить текущую дату в JavaScript очень просто. Для этого предназначен объект Date . Его синтаксис достаточно прост, а имена методов интуитивно понятны. В приведенных ниже примерах я покажу, как работать с объектом Date (JavaScript new date ), чтобы получить текущие год, месяц, день и время с точностью до миллисекунды!

Получение текущей даты:

Чтобы получить в JavaScript текущую дату, используйте ключевое слово new для создания нового экземпляра объекта Date .

var date = new Date(); console.log(date);

Этот код выводит на консоль следующую информацию:

//Tue Feb 02 2016 15:46:56 GMT-0500 (Eastern Standard Time)

Здесь отображается текущий день недели, текущий месяц, день месяца, год и даже текущее время в 24-часовом формате. Фрагмент «GMT » означает время по Гринвичу, а «-0500 » — это разница в часовых поясах между местным временем и GMT .

Цитата из Википедии : «Среднее время по Гринвичу (GMT ) — это среднее солнечное время в Королевской обсерватории в Гринвиче, Лондон.» Это связано с универсальным координированным временем (UTC ). «Eastern Standard Time » в выведенном значении даты относится к временной зоне вашего браузера или компьютера.

* Обратите внимание, что GMT и UTC различаются между собой. Мы будем рассматривать значения UTC в минутах.

* Также обратите внимание, что дата в JavaScript определяется временем в миллисекундах, которое прошло с полуночи 01 января 1970 года, UTC. В одном дне 86,400,000 миллисекунд. Диапазон объекта Date составляет от -100,000,000 дней до 100,000,000 дней относительно 01 января 1970 года, UTC.

* Значения, полученные с использованием упомянутого выше метода, зависят от настроек системы вашего устройства. Если вы измените настройки часов компьютера, изменится и время, которое будет возвращать этот метод.

Хорошо, мы разобрались с new Date JavaScript форматами и теперь готовы двигаться дальше!

Получение дня недели:

Чтобы получить день недели, используйте метод JavaScript объекта Date getDay() :

var day = date.getDay(); console.log(day);

* Обратите внимание, что дни недели пронумерованы от 0 до 6, воскресенье = 0, понедельник = 1, вторник = 2 и так далее.

Получение месяца:

Чтобы получить текущий месяц текущего года, используйте метод getMonth() . До этого я говорил, что названия методов интуитивно понятны!

var month = date.getMonth(); console.log(month); //1

* Обратите внимание, что, как и дни недели, месяцы возвращаются в числовом формате от 0 до 11; январь = 0, февраль = 1, март = 2 и так далее.

Получение дня месяца:

Чтобы получить день месяца, можно использовать метод GetDate() .

var dayOfMonth = date.getDate(); console.log(dayOfMonth); //2

* Метод GetDate() возвращает дни месяца, пронумерованные от 1 до 31; номер 1 соответствует первому дню месяца.

Получение времени:

Чтобы получить текущее время, используется метод GetTime () .

var time = date.getTime(); console.log(time); //1454461242058

Выглядит… странно… Что это такое? Вы видите количество миллисекунд, прошедших с 1 января 1970 00:00:00 UTC. Так сколько это лет?

1454461242058 мс / 31540000000 мс в году = около 46 лет
1970 год + 46 лет = 2016 год

Давайте проверим, чтобы убедиться:

var year = date.getFullYear(); console.log(year) //2016

Да, это оно! Мы только что вывели с помощью JavaScript new date текущую дату и время.

На этом уроке мы познакомимся с объектом Date языка JavaScript и научимся его использовать на практике.

Объект Date

Объект Date представляет собой точку на оси времени и предназначен для хранения даты и времени с точностью до миллисекунды.

Объект Date можно создавать различными способами:

  • Без параметров (хранит дату и время, которая была в момент создания объекта на локальном компьютере); var newDate = new Date(); alert(newDate);
  • С одним числовым параметром, в этом случае дата и время задаётся как количество миллисекунд, прошедших с 1 января 1970 00:00:00 UTC; // 1 год ≈ 365*24*60*60*1000 ≈ 31536000000 мс var date1 = new Date(31536000000); alert(date1);
  • С одним строковым параметром, в этом случае JavaScript пытается разобрать строку с помощью метода Date.parse , т.е. преобразовать в дату. // YYYY-MM-DDThh:mm:ss.sss //Для разделения даты и времени используется символ T var str = "2015-02-24T21:23"; var date2 = new Date(str); alert(date2); //Также можно указать часовой пояс +hh:mm или -hh:mm var str1 = "2015-02-24T22:02+03:00"; var date2 = new Date(str1); alert(date2);
  • Используя множество параметров перечисленных через запятую: год (4 цифры), месяц (отсчёт ведётся с 0), день (1..31), часы (0..23), минуты (0..59), секунды (0..59), миллисекунды (0..999). Причём обязательными являются только первых 2 параметра. //1 пример: только обязательные параметры //неуказанные параметры равны: число - 01, часы - 00, минуты - 00, секунды - 00, миллисекунды - 000. var date3 = new Date(2015,01); alert(date3); //2 пример //неуказанные параметры равны: секунды - 00, миллисекунды - 000. var date4 = new Date(2015,01,24,21,23); alert(date4);
  • Примечание: Если Вам необходимо установить дату и время в UTC, то можете воспользоваться методом Date.UTC:

    //1 пример var date1 = Date.UTC(2015,1,1); var date2 = new Date(date1); alert(date2.toUTCString()); //2 пример var newDate = new Date(Date.UTC(2015,1,1)); alert(newDate.toUTCString());

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

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

    • для получения отдельных компонентов даты и времени (начинаются методы с глагола get);
    • для установления даты и времени (начинаются методы с глагола set);
    • для преобразования даты в строку (начинаются методы с to);
    • для преобразования строки в дату: метод Date.parse .
    Методы для получения отдельных компонентов объекта Date
    • Методы объекта Date для получения отдельных компонентов даты и времени в местном часовом поясе:
      • getFullYear() - метод, который возвращает год, состоящий из 4 чисел;
      • getMonth() - метод, который возвращает месяц в числовом формате: 0..11 (0 - январь, 1-февраль, 2 март, ...,11 - декабрь).
      • getDate() - метод, который возвращает число месяца: 1..31;
      • getHours() - метод, который возвращает количество часов: 0..23;
      • getMinutes() - метод, который возвращает количество минут: 0..59;
      • getSeconds() - метод, который возвращает количество секунд: 0..59;
      • getMilliseconds() - метод, который возвращает количество миллисекунд: 0..999;
      var newDate = new Date (2015,01,25,17,54,34,178); document.write("---Дата---" + "
      "); document.write("Год: " + newDate.getFullYear() + "
      "); document.write("Месяц: " + newDate.getMonth() + "
      "); document.write("Число: " + newDate.getDate() + "
      "); document.write("---Время---" + "
      "); document.write("Часы: " + newDate.getHours() + "
      "); document.write("Минуты: " + newDate.getMinutes() + "
      "); document.write("Секунды: " + newDate.getSeconds() + "
      "); document.write("Миллисекунды: " + newDate.getMilliseconds() + "
      ");
    • Методы объекта Date для получения отдельных компонентов даты и времени в UTC: getUTCFullYear() , getUTCMonth() , getUTCDate() , getUTCHours() , getUTCMinutes() , getUTCSeconds() , getMilliseconds() . Данные методы аналогичны предыдущим методам, за исключением того что они возвращают дату и время в UTC.
    • Метод getTime() . Он предназначен для возвращения количества миллисекунд, прошедших с 01.01.1970 00:00:00 UTC.
    • Метод getTimezoneOffset() . Он предназначен для возвращения разницы в минутах между часовым поясом локального компьютера и UTC.
    Методы для установления отдельных компонентов объекта Date
    • Методы объекта Date для установления отдельных компонентов даты и времени в местном часовом поясе:
      • setFullYear() - метод, который устанавливает год. Кроме этого, данный метод имеет ещё 2 необязательных параметра, с помощью которых Вы можете дополнительно установить месяц и число. var newDate = new Date(); //установить для newDate с помощью метода setFullYear: год - 2014. newDate.setFullYear(2014); //установить для newDate с помощью метода setFullYear: год - 2014, месяц - 08 (сентябрь, т.к. отсчёт ведётся с 0). newDate.setFullYear(2014,08); //установить для newDate с помощью метода setFullYear: год - 2014, месяц - 08 (сентябрь), число - 20. newDate.setFullYear(2014,08,20);
      • setMonth() - метод, который устанавливает месяц в числовом формате: 0..11 (0 - январь, 1-февраль, 2 март, ...,11 - декабрь). Кроме этого, данный метод имеет ещё 1 необязательный параметр, с помощью которого Вы можете дополнительно установить число. var newDate = new Date(); //установить для newDate с помощью метода setMonth: месяц - 05 (июнь). newDate.setMonth(05); //установить для newDate с помощью метода setMonth: месяц - 05 (июнь), число - 15. newDate.setMonth(05,15);
      • setDate() - метод, который устанавливает число. var newDate = new Date(); //установить для newDate с помощью метода setDate: число - 28. newDate.setDate(28);
      • setHours() - метод, который устанавливает количество часов: 0..23. Кроме этого, данный метод имеет ещё 3 необязательных параметра, с помощью которых Вы можете дополнительно установить минуты, секунды и миллисекунды. var newDate = new Date(); //установить для newDate с помощью метода setHours: часы - 13. newDate.setHours(13); //установить для newDate с помощью метода setHours: часы - 13, минуты - 20. newDate.setHours(13,20); //установить для newDate с помощью метода setHours: часы - 13, минуты - 20, секунды - 37. newDate.setHours(13,20,37); //установить для newDate с помощью метода setHours: часы - 13, минуты - 20, секунды - 37, миллисекунды - 230. newDate.setHours(13,20,37,230);
      • setMinutes() - метод, который устанавливает количество минут: 0..59. Кроме этого, данный метод имеет ещё 2 необязательных параметра, с помощью которых Вы можете дополнительно установить секунды и миллисекунды. var newDate = new Date(); //установить для newDate с помощью метода setMinutes: минуты - 37. newDate.setMinutes(37); //установить для newDate с помощью метода setMinutes: минуты - 37, секунды - 12. newDate.setMinutes(37,12); //установить для newDate с помощью метода setMinutes: минуты - 37, секунды - 12, миллисекунды - 710. newDate.setMinutes(37,12,710);
      • setSeconds() - метод, который возвращает количество секунд: 0..59. Кроме этого, данный метод имеет один необязательный параметр, с помощью которого Вы можете дополнительно установить миллисекунды. var newDate = new Date(); //установить для newDate с помощью метода setSeconds: секунды - 40. newDate.setSeconds(40); //установить для newDate с помощью метода setSeconds: секунды - 40, миллисекунды - 105. newDate.setSeconds(40,105);
      • setMilliseconds() - метод, который устанавливает количество миллисекунд: 0..999. var newDate = new Date(); //установить для newDate с помощью метода setMilliseconds: миллисекунды - 318. newDate.setSeconds(318);
    • Методы объекта Date для установления отдельных компонентов даты и времени в UTC: setUTCFullYear() , setUTCMonth() , setUTCDate() , setUTCHours() , setUTCMinutes() , setUTCSecondes() , setUTCMilliseconds() . Данные методы аналогичны предыдущим методам, за исключением того что они устанавливают дату и время в UTC.
    • Метод setTime() . Он предназначен для установления даты и времени посредством сложения или вычитания количества миллисекунд от даты 01.01.1970 00:00:00 UTC.

    Примечание: В JavaScript некорректно установленная дата приводит не к ошибкам, а лишь к тому, что она автоматически распределяется по остальным компонентам объекта Date.
    Например, при установлении даты newDate.setFullYear = new Date(2015,01,40) (т.е. 40.01.2015) ошибки не произойдёт. Число 40 распределится следующим образом: 9 февраля 2015 года (т.к. в январе 31 день, то число будет равно 9 (40-31), а месяц +1).

    //Пример 1: прибавим к дате 7 дней var date1 = new Date(2015,02,26,22,03); date1.setDate(date1.getDate()+7); //Пример 2: отнимем от даты 120 секунд var date2 = new Date(2015,02,26,22,03); date2.setSeconds(date1.getSeconds()-120); //Пример 3: последнее число предыдущего месяца var date3 = new Date(2015,02,26,22,03); date3.setDate(0);

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

    В JavaScript существует огромное количество методов, предназначенных для перевода даты в строку.

    Первую группу составляют методы, результат которых зависит от используемого браузера. Т.е. формат возвращаемой строки зависит от производителя браузера.

// toString() - возвращает строку, содержащую дату и время // toDateString() - возвращает строку, содержащую дату // toTimeString() - возвращает строку, содержащую время // сохраним в переменную date дату 13.07.2016 22:31:00 var date = new Date(2016,06,13,22,31); // преобразуем дату в строку console.log(date.toString()); //"Wed Jul 13 2016 22:31:00 GMT+1000 (RTZ 9 (зима))" // трансформируем дату в строку, содержащую только дату console.log(date.toDateString()); //"Wed Jul 13 2016" // переведём дату в строку, содержащую только время console.log(toTimeString()); //"22:31:00 GMT+1000 (RTZ 9 (зима))"
  • Методы, которые преобразуют дату в строку с учётом часового пояса и языка локального компьютера.
    • toLocaleString() - возвращает строку, содержащую дату и время;
    • toLocaleDateString() - возвращает строку, содержащую дату;
    • toLocaleTimeString() - возвращает строку, содержащую время.
  • toUTCString() - метод, который возвращает строку, содержащую дату и время в UTC.
  • toISOString() - метод, который возвращает строку, содержащую дату и время в формате ISO (YYYY-MM-DDTHH:mm:ss.sssZ).
var date5 = new Date(); document.write("toString() - " + date5.toString() + "
"); document.write("toDateString() - " + date5.toDateString() + "
"); document.write("toTimeString() - " + date5.toTimeString() + "
"); document.write("toLocaleString() - " + date5.toLocaleString() + "
"); document.write("toLocaleDateString() - " + date5.toLocaleDateString() + "
"); document.write("toLocaleTimeString() - " + date5.toLocaleTimeString() + "
"); document.write("toUTCString() - " + date5.toUTCString() + "
"); document.write("toISOString() - " + date5.toISOString() + "
"); Метод для преобразования строки в дату

JavaScript для преобразования строки в дату использует метод Date.parse() . Этот метод может преобразовать строку, если она выполнена в соответствии со стандартом RFC2822 или ISO 8601.

В этом уроке рассмотрим стандарт ISO 8601, в котором строка должна иметь следующий формат: YYYY-MM-DDThh:mm:ss.sssZ .

  • YYYY – год, состоящий из 4 цифр;
  • MM – месяц, состоящий из 2 цифр (01 = Январь, 02 = Февраль, и т.д.);
  • DD – день месяца, состоящий из 2 цифр (01..31);
  • T – символ для разделения даты и времени;
  • hh – количество часов (00..23);
  • mm - количество минут (00..59);
  • ss - количество секунд (00..59);
  • sss - количество миллисекунд (0..999);
  • Z - символ, который означает, что время задаётся в формате UTC. Если Вам необходимо вместо UTC установить часовой пояс, то букву " Z " следует заменить значением +hh:mm или -hh.mm .

Если строка, содержащая дату и время, задана не в формате RFC2822 или ISO 8601, то метод JavaScript Date.parse() всё равно может выполнить её преобразование, но результат в этом случае могут оказаться непредсказуемым.