Vanilla JavaScript: Как работать с датами и временем
Конструктор new Date()
Вы можете использовать конструктор new Date()
для создания объекта Date
в JavaScript.
Вы можете передать конкретную дату (и, возможно, время) в различных форматах. Если вы вообще не передадите аргументы, он создаст объект Date
для текущего момента.
В качестве альтернативы вы можете передать строку даты в качестве аргумента. Вам не нужно указывать конкретное время, но если вы это сделаете, то необходимо использовать 24-часовой формат.
Результирующий объект Date
относится к вашему текущему часовому поясу.
// Создание объекта date для текущего момента времени
let now = new Date();
// Создание объекта date для Хэллоуина
let halloween = new Date('October 31, 2022');
// Создание объекта date для 21 Марта, 2023 года, 14:00
let springLuncheon = new Date('March 21, 2023 14:00');
Для большей точности в браузерах и операционных системах рекомендуется использовать формат даты и времени ISO 8601: YYYY-MM-DDTHH:MM:SS
.
Первая часть (YYYY-MM-DD
) — это год (YYYY
), месяц (MM
) и число (DD
). T
обозначает время. После него (HH:MM:SS
) — это часы (HH
), минуты (MM
) и секунды (SS
) в 24-часовом формате, и они должны быть включены, иначе возвращаемый в JavaScript объект Date
будет неточным. Используйте 00:00:00
для полуночи.
// Новый год, полночь
let newYears = new Date('2024-01-01T00:00:00');
// 4 Июля, полдень
let summerParty = new Date('2023-07-04T12:00:00');
Вы также можете создать объект Date
в JavaScript, передав ряд аргументов: год (year
), индекс месяца (monthIndex
), день (day
), часы (hours
), минуты (minutes
), секунды (seconds
), и миллисекунды (milliseconds
). Только year
и monthIndex
обязательные параметры.
Аргумент monthIndex
может немного сбивать с толку, потому что он начинается с Января с 0
, вместо 1
.
// Обратите внимание, что месяц индекса равен 9, хотя это Октябрь — 10-й месяц
let halloween = new Date(2021, 9, 31);
// Рождественское утро в 10:30 по местному времени
let christmas = new Date(2021, 11, 25, 10, 30);
Метки времени Unix / Unix Timestamp
Под капотом объект Date
в JavaScript хранит момент времени в виде Unix Timestamp
, количество миллисекунд прошедших с 1 января 1970 года.
Вы можете получить Unix Timestamp
из объекта Date
, используя метод Date.getTime()
.
let halloween = new Date('October 31, 2023');
// вернёт 1698724800000
let timestamp = halloween.getTime();
Вы можете передать Unix Timestamp
в конструктор new Date()
для создания объекта Date
.
let earthDay = new Date(1682136000000);
Во многих языках программирования временные метки Unix отслеживаются в секундах, а не миллисекундах.
Если вы создаёте в javaScript объект Date
из временной метки предоставленной сервером или API, важно знать, в секундах она или миллисекундах. Если это секунды, то нужно умножить на 1000
, для преобразования в миллисекунды.
let timestamp = 1682136000;
let someDate = new Date(timestamp * 1000);