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);