Vanilla JavaScript: Как работать с датами и временем

Источник: «How to work with dates and times in vanilla JavaScript»
Объект Date в JavaScript представляет момент времени. Хотя у него есть полезные функции, работать с ним сложно. Мы рассмотрим, как создать новый объект Date и, надеюсь, сделать его немного проще в использовании.

Конструктор 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);

Дополнительные материалы

Предыдущая Статья

Новое в Symfony 6.3 — Сопоставитель параметров запроса

Следующая Статья

Новое в Symfony 6.3 — Улучшения производительности