базовый курс

ГРУППА КУРСА

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

Объект Date

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

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

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

+
1
2
3
4
5
6
7
8
<!DOCTYPE html>
<html>
<head>
<title>Страница</title>
<meta charset="utf-8">
</head>
<body>
<script>
9
10
var current = new Date();
document.write(current);

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

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

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

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

Параметры:

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

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

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

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

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

11
12
13
var useday = new Date(2017, 7, 20);
document.write('<br>');
document.write(useday);

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

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

14
15
var usedaymin = new Date(2017, 7, 20, 10, 70);
document.write('<br>'+usedaymin);

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

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

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

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

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

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

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

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

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

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

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

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

16
17
var hour=current.getHours();
document.write('<br>'+hour);

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

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

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

Параметры:

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

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

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

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

Параметры:

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

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

setDate (день);

Параметры:

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

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

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

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

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

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

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

18
useday.setHours(2);

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

19
useday.setHours(2, 5);

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

20
usedaymin.setHours(28);

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

Время в секундах

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

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

21
document.write('<br>'+useday.getTime());

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

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

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

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

24
usedaymin.setTime(1503298100000);