В Luxon день недели представлен как числовое значение в диапазоне от 1 до 7, где используется ISO-стандарт: 1 соответствует понедельнику, 7 — воскресенью. Это поведение отличается от некоторых стандартных JavaScript-методов, где неделя часто начинается с воскресенья и имеет индекс 0.
Основное свойство для работы с днем недели —
weekday:
import { DateTime } from 'luxon';
const dt = DateTime.local(2026, 5, 23);
dt.weekday; // число от 1 до 7
Значение weekday всегда зависит от календарной локали
ISO и не меняется произвольно, что делает его удобным для систем
планирования, расписаний и аналитики.
Luxon предоставляет несколько способов получить строковое представление дня недели:
weekdayLong — полное название дняweekdayShort — сокращенное название дняconst dt = DateTime.local();
dt.weekdayLong; // например "Saturday"
dt.weekdayShort; // например "Sat"
Язык вывода зависит от локали:
const dt = DateTime.local().setLocale('ru');
dt.weekdayLong; // "суббота"
dt.weekdayShort; // "сб"
Локализация влияет не только на язык, но и на формат представления, что важно при работе с мультиязычными интерфейсами и отчетами.
Luxon позволяет управлять локалью через метод setLocale,
не изменяя при этом саму дату:
const dt = DateTime.local(2026, 5, 23);
dt.setLocale('en').weekdayLong; // "Saturday"
dt.setLocale('fr').weekdayLong; // "samedi"
dt.setLocale('de').weekdayLong; // "Samstag"
Сама числовая модель недели при этом остается ISO-совместимой и неизменной.
День недели часто используется для фильтрации и логики расписаний:
const dt = DateTime.local();
if (dt.weekday === 1) {
// понедельник
}
if (dt.weekday >= 6) {
// выходные
}
Такой подход предпочтительнее строковых сравнений, поскольку обеспечивает стабильность и независимость от языка.
День года в Luxon представлен свойством ordinal. Оно
показывает порядковый номер дня в пределах года — от 1 до 365 или 366 в
високосном году.
const dt = DateTime.local(2026, 5, 23);
dt.ordinal;
Значение ordinal полезно при работе с годовыми циклами,
статистикой и календарными расчетами.
Luxon автоматически учитывает календарные правила григорианской системы:
const leap = DateTime.local(2024, 12, 31);
leap.ordinal; // 366
Это позволяет корректно выполнять вычисления без ручной проверки условий високосности.
Помимо свойства ordinal, Luxon поддерживает
форматирование через токен o:
const dt = DateTime.local(2026, 5, 23);
dt.toFormat('o'); // строковое представление дня года
Этот формат часто используется в отчетах и логах, где требуется компактное представление даты в рамках года.
День года удобен для задач, связанных с временными рядами:
const data = [
DateTime.local(2026, 1, 10),
DateTime.local(2026, 2, 15),
DateTime.local(2026, 5, 23)
];
const grouped = data.reduce((acc, dt) => {
const key = dt.ordinal;
acc[key] = (acc[key] || 0) + 1;
return acc;
}, {});
Такой подход позволяет агрегировать данные без учета месяца или недели, работая исключительно с линейной шкалой года.
При изменении даты через методы вроде plus и
minus значение ordinal пересчитывается
автоматически:
const dt = DateTime.local(2026, 1, 1);
dt.plus({ days: 100 }).ordinal;
Это делает возможным построение календарных алгоритмов без ручного управления границами месяцев.
Совместное использование weekday и ordinal
позволяет решать задачи календарного анализа:
const dt = DateTime.local();
const info = {
weekday: dt.weekday,
dayOfYear: dt.ordinal
};
Такой набор данных используется для:
Стабильность ISO-нумерации дня недели и линейность
ordinal делают Luxon удобным инструментом для подобных
вычислений без необходимости дополнительной нормализации дат.