базовый курс

ГРУППА КУРСА

Дата и время в JavaScript

Объект Date

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

имя объекта = new Date();

При создании оъбект получает определённое значение. Если в скобках не указаны никакие параметры, то объект содержит текущие дату и время. Создадим объект Date и выведем его значение:

+
9
10
let current = new Date();
console.log(current);

Запустите страницу и посмотрите полученную строку. Рассмотрим её подробно. Первое слово - это день недели. Второе слово - это месяц. Затем число и год. Далее идут через двоеточие часы, минуты и секунды. Затем указан часовой пояс. Использовать время именно в таком виде не обязательно. Далее будут рассмотрены отдельные компоненты объекта.

Указание времени

Создаваемый объект может содержать не только текущее время, но и указанный момент времени. Для этого при создании объекта нужно указать параметры в скобках.

new Date (год, месяц, день, часы, минуты, секунды, милисекунды);

Параметры:

год - четырёхзначное число, указывающее год

месяц - номер месяца. Отсчёт начинается с нуля

день - день месяца

Год и месяц являются обязательными параметрами. Остальные можно не указывать, если Вам не нужна такая точность указания времени.

Создадим объект, содержащий дату - 20 августа 2017 года.

11
12
var useDay = new Date(2017, 7, 20);
console.log(useDay);

Так как нумерация месяцев начинается с нуля, то мы указали не 8 месяц, а 7. Мы не указали часы минуты и секунды, поэтому они равны нулю.

Дату или время можно указать неправильно. При этом просисодит автоматический перевод времени в такой вид, в котором оно и должно быть указано. Для примера создадим объект с той же датой, но укажем 10 часов, а в минутах напишем 70.

14
15
var useDayMin = new Date(2017, 7, 20, 10, 70);
console.log(useDayMin);

Посмотрите, как произведён расчёт времени - минуты переведены в часы и добавлены к часам, а остаток от этого перевода записан в минутах. Таким же способом будет переведён любой неправильно указанный параметр объекта.

Компоненты объекта Date

У созданного объекта Date можно получить отдельные компоненты. Для этого используются методы этого объекта.

getDay() - возвращает номер дня недели. Отсчёт начинается с Воскресенья, он имеет номер 0

getFullYear() - возвращает четырёхзначное число, содержащее год.

getMonth() - возвращает месяц

getDate() - возвращает день месяца

getHours() - возвращает часы

getMinutes() - возвращает минуты

getSeconds() - возвращает секунды

getMilliseconds() - возвращает милисекунды

Для примера выведем час для текущего времени. Напомню, текущее время содержит объект current, который мы создали в начале темы.

16
17
let hour = current.getHours();
console.log(hour);

Изменение даты и времени

Рассмотренные выше компоненты можно не только получить, но и изменить. Это можно сделать с помощью следующих методов:

setFullYear (год, месяц, день);

Параметры:

год - указание года

месяц - указание месяца. Необязательный параметр. Если не указать, то месяц не изменяется

день - указание дня месяца. Необязательный параметр. Если не указать, то день не изменяется

setMonth (месяц, день);

Параметры:

месяц - указание месяца

день - указание дня месяца. Необязательный параметр

setDate (день);

Параметры:

день - указание дня месяца

setHours (часы, минуты, секунды, милисекунды);

setMinutes (минуты, секунды, милисекунды);

setSeconds (секунды, милисекунды);

setMilliseconds (милисекунды);

У всех этих метедов обязательным является только первый параметр

Изменим часы у объекта useDay.

18
useDay.setHours(2);

Если нужно указать часы и минуты, то можно использовать методы отдельно для часов и для минут. Но проще использовать один метод.

19
useDay.setHours(2, 5);

Так же как и при создании объекта, компоненту можно указать число большее, чем допускает формат.

20
useDayMin.setHours(28);

Такой способ можно использовать, чтобы прибваить или отнять какой-то промежуток времени. Для примера прибавим 35 часов к объекту useday:

21
22
let obHours = useDay.getHours();
useDay.setHours(obHours + 35);

Время в формате Unix

Существует распространённый формат даты и времени, который используется в большинстве языков программирования. Выбрана условная точка отсчёта, 00 часов 00 минут 00 секунд 1 января 1970 года. Ещё её называют начало эпохи Unix. Любой момент времени можно представить в виде количества секунд, прошедших с этого времени. Такой формат может показаться странным, но на самом деле, он очень удобен. Привычное для нас представление времени состоит из нескольких чисел: отдельно часы, отдельно минуты и так далее. А время в секундах - это одно число. К нему можно легко прибавить или отнять любой отрезок времени и произвести другие математические расчёты. А полученный результат можно перевести в привычный формат. Для этого в языках программирования есть стандартные функции. В JavaScript время представляется не в секундах, а в милисекундах, то есть, добавляется ещё три знака. Так сделано потому, что JavaScript иногда работает с очень короткими промежутками времени. Принципиально это ничего не меняет, просто это нужно учитывать при расчётах.

Чтобы получить значение какого-то объекта Date в формате Unix, можно использовать метод getTime(). Он возвращает число, содержащее время в милисекундах. С этим числом можно произвести вычисление и результат записать в тот же или другой объект.

24
console.log(useDay.getTime());

При создании нового объекта Date можно указать только один аргумент. Это время в милисекундах.

27
28
var ntime = new Date(1503296100000);
document.write('<br>'+ntime);

Созданный таким способом объект ничем не отличается от других.

Метод setTime() позволяет записать в существующий объект новое значение в формате милисекунд.

29
useDayMin.setTime(1503298100000);