В Luxon работа с полями даты и времени построена вокруг объекта
DateTime, который предоставляет набор строго типизированных
свойств и методов для извлечения конкретных значений. Вместо ручного
разбора стандартного Date, библиотека позволяет обращаться
к каждому компоненту напрямую, сохраняя контроль над временными зонами и
календарными особенностями.
Основной способ получения значений — доступ к свойствам экземпляра
DateTime. Эти свойства возвращают уже нормализованные
числовые значения.
К базовым компонентам даты относятся:
year — годmonth — месяц (1–12)day — день месяцаhour — час (0–23)minute — минутыsecond — секундыmillisecond — миллисекундыimport { DateTime } from "luxon";
const dt = DateTime.local(2026, 5, 23, 14, 45, 30);
dt.year; // 2026
dt.month; // 5
dt.day; // 23
dt.hour; // 14
dt.minute; // 45
dt.second; // 30
dt.millisecond; // 0
Каждое значение извлекается уже с учётом текущей временной зоны
объекта DateTime.
Помимо базовых полей, Luxon предоставляет дополнительные вычисляемые свойства, связанные с календарём и локализацией.
Поле weekday возвращает числовое значение дня
недели:
dt.weekday; // например, 6 (суббота)
Поле ordinal показывает день в году от 1 до 365 (или 366
в високосный год):
dt.ordinal; // например, 143
Это значение полезно при расчётах сезонных или годовых интервалов.
Luxon поддерживает ISO-нумерацию недель:
weekNumber — номер недели в годуweekYear — год, к которому относится неделяdt.weekNumber; // например, 21
dt.weekYear; // может отличаться от year на границе года
Особенность заключается в том, что первая неделя года определяется по ISO-8601, а не по календарному принципу.
Для работы с временными зонами используются отдельные свойства.
dt.zoneName;
Возвращает строковое представление временной зоны, например
"UTC" или "Europe/Moscow".
dt.offset;
Значение выражается в минутах и показывает разницу с UTC:
0 — UTC180 — UTC+3-300 — UTC-5Это поле особенно важно при низкоуровневой работе с временем и интеграции с внешними API.
Для извлечения набора значений используется метод
toObject(). Он возвращает структуру, содержащую основные
компоненты даты.
dt.toObject();
Пример результата:
{
year: 2026,
month: 5,
day: 23,
hour: 14,
minute: 45,
second: 30,
millisecond: 0
}
Метод удобен при сериализации или передаче данных между слоями приложения.
Luxon позволяет преобразовать объект в стандартный
Date:
dt.toJSDate();
Этот метод возвращает нативный объект JavaScript, при этом все временные вычисления уже учтены на уровне Luxon.
Использование такого преобразования целесообразно при взаимодействии с API, которые не поддерживают Luxon напрямую.
Хотя основной акцент делается на свойства, иногда требуется получить
значения в специфическом формате. Для этого используется
toFormat():
dt.toFormat("yyyy-MM-dd HH:mm:ss");
Данный подход не извлекает поля напрямую, но опирается на них при формировании строки.
Поведение полей DateTime имеет несколько ключевых
особенностей:
setZone() влияет на все
возвращаемые поля;const utc = dt.setZone("utc");
utc.hour; // значение пересчитано относительно UTC
В Luxon важно различать:
year, month,
day)toObject, toISO,
toFormat)Первые используются для точечного доступа к данным, вторые — для сериализации и преобразования представления.
Такое разделение снижает вероятность ошибок при работе с временными
значениями и делает структуру DateTime предсказуемой при
сложных вычислениях.