Объект Date позволяет работать с датами и временем в JavaScript.
Существуют различные способы создания объекта Date:
С помошью пустого конструктора Date без параметров. В этом случае созданный объект хранит текущие дату и время
const currentDate = new Date(); console.log(currentDate); // Thu Oct 26 2023 13:17:53 GMT+0100
В конструктор Date передается количества миллисекунд, которые прошли с начала эпохи Unix, то есть с 1 января 1970 года 00:00:00 GMT:
const myDate = new Date(1359270000000); console.log(myDate); // Sun Jan 27 2013 11:00:00 GMT+0400 (Москва, стандартное время)
В конструктор Date передаются день, месяц и год:
const date1 = new Date("27 March 2008"); console.log(date1); // Thu Mar 27 2008 00:00:00 GMT+0300 (Москва, стандартное время) // или так const date2 = new Date("3/27/2008"); console.log(date2); // Thu Mar 27 2008 00:00:00 GMT+0300 (Москва, стандартное время) // или так const date3 = new Date("3 27 2008"); console.log(date3); // Thu Mar 27 2008 00:00:00 GMT+0300 (Москва, стандартное время)
Если мы используем полное название месяца, то оно пишется в по-английски, если используем сокращенный вариант, тогда используется формат "месяц/день/год" или "месяц день год".
Четвертый способ состоит в передаче в конструктор Date всех параметров даты и времени:
const myDate = new Date(2012,11,25,18,30,20,10); console.log(myDate); // Tue Dec 25 2012 18:30:20 GMT+0400 (Москва, стандартное время)
В данном случае используются по порядку следующие параметры: new Date(год, месяц, число, час, минуты, секунды, миллисекунды)
.
При этом надо учитывать, что отсчет месяцев начинается с нуля, то есть январь - 0, а декабрь - 11.
Для получения различных компонентов даты применяется ряд методов:
getDate(): возвращает день месяца
getDay(): возвращает день недели (отсчет начинается с 0 - воскресенье, и последний день - 6 - суббота)
getMonth(): возвращает номер месяца (отсчет начинается с нуля, то есть месяц с номер 0 - январь)
getFullYear(): возвращает год
toDateString(): возвращает полную дату в виде строки
getHours(): возвращает час (от 0 до 23)
getMinutes(): возвращает минуты (от 0 до 59)
getSeconds(): возвращает секунды (от 0 до 59)
getMilliseconds(): возвращает миллисекунды (от 0 до 999)
toTimeString(): возвращает полное время в виде строки
Получим текущую дату:
const today = new Date(); console.log(today.getDate()); // 26 console.log(today.getDay()); // 4 console.log(today.getMonth()); // 9 console.log(today.getFullYear()); // 2023
Преобразуем данные в более читабельную форму:
const days = ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"]; const months = ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"]; const today = new Date(); console.log(`Сегодня: ${today.getDate()} ${months[today.getMonth()]} ${today.getFullYear()}, ${days[today.getDay()]}`); // Сегодня: 26 Октябрь 2023, Четверг
Перевести из числовых значений в более привычные названия для дней недели и месяцев используются массивы. Получив индекс дня недели (today.getDay()
)
и индекс месяца (today.getMonth()
) можно получить нужный элемент из массива.
Теперь получим текущее время:
var welcome; const myDate = new Date(); const hour = myDate.getHours(); const minute = myDate.getMinutes(); const second = myDate.getSeconds(); console.log(`Текущее время: ${hour}:${minute}:${second}`); // Текущее время: 13:38:26
Кроме задания параметров даты в конструкторе для установки мы также можем использовать дополнительные методы объекта Date:
setDate(): установка дня в дате
setMonth(): уставовка месяца (отсчет начинается с нуля, то есть месяц с номер 0 - январь)
setFullYear(): устанавливает год
setHours(): установка часа
setMinutes(): установка минут
setSeconds(): установка секунд
setMilliseconds(): установка миллисекунд
Установим дату:
const myDate = new Date(); myDate.setDate(14); myDate.setMonth(10); // ноябрь myDate.setFullYear(2023); console.log(myDate); // Tue Nov 14 2023 13:41:20 GMT+0300 (Москва, стандартное время)
При установке значений мы можем передать величину, большую, чем максимальное допустимое значение. Например, установить для часа число 54:
myDate.setHours(54);
В этом случае значение часа будет равно 54 - 24 * 2 = 6, а оставшиеся часы будут составлять два дня (24 * 2), что прибавит к дате два дня. То же самое действует и в отношении дней, минут, секунд, миллисекунд и месяцев.