Метод Info.weekdays относится к вспомогательному модулю
Info библиотеки Luxon и предназначен для получения списка
названий дней недели в заданной локали и формате отображения. Он
опирается на встроенную поддержку Intl и позволяет
извлекать локализованные подписи без ручного хранения языковых
таблиц.
Основная задача метода — вернуть массив строк, соответствующих дням недели, начиная с понедельника или воскресенья в зависимости от локали и настроек среды.
Info.weekdays(length?: string, opts?: object)
или в более полной форме:
Info.weekdays(length, format, locale)
В современных версиях Luxon предпочтительным считается использование объекта параметров.
Определяет формат названий дней недели:
"long" — полные названия"short" — сокращённые формы"narrow" — минимальные формы (обычно одна буква)"numeric" — числовые представления (используется реже и
зависит от локали)Пример различий:
MondayMonMПозволяет задать язык и регион отображения:
{ locale: 'ru' }
{ locale: 'en-US' }
{ locale: 'de' }
При отсутствии параметра используется локаль окружения (браузера или Node.js Intl).
Luxon не всегда напрямую управляет началом недели через
Info.weekdays, но поведение может зависеть от локали. В
большинстве случаев:
Метод возвращает массив строк:
string[]
Каждый элемент соответствует одному дню недели в порядке, принятом для данной локали.
import { Info } from "luxon";
const days = Info.weekdays("long");
console.log(days);
Результат (en-US):
[
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
]
const daysRu = Info.weekdays("long", { locale: "ru" });
console.log(daysRu);
Результат:
[
"понедельник",
"вторник",
"среда",
"четверг",
"пятница",
"суббота",
"воскресенье"
]
const shortDays = Info.weekdays("short", { locale: "en-GB" });
console.log(shortDays);
Типичный результат:
[
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
"Sun"
]
const narrowDays = Info.weekdays("narrow", { locale: "de" });
console.log(narrowDays);
Возможный результат:
["M", "D", "M", "D", "F", "S", "S"]
(в разных локалях может наблюдаться неоднозначность из-за повторяющихся букв)
Luxon не хранит собственные таблицы перевода дней недели. Вместо
этого используется Intl.DateTimeFormat:
Это означает:
Порядок элементов массива фиксирован:
Понедельник → Вторник → ... → Воскресенье
Однако важно учитывать, что некоторые локали концептуально считают началом недели воскресенье, но Luxon сохраняет единый логический порядок для предсказуемости.
const weekdays = Info.weekdays("short", { locale: "en-US" });
const header = weekdays.join(" | ");
console.log(header);
Вывод:
Mon | Tue | Wed | Thu | Fri | Sat | Sun
const labels = Info.weekdays("long", { locale: "ru" });
labels.forEach(day => {
console.log(`<th>${day}</th>`);
});
function getWeekdayLabels(locale) {
return Info.weekdays("short", { locale });
}
const en = getWeekdayLabels("en");
const fr = getWeekdayLabels("fr");
const ja = getWeekdayLabels("ja");
Если среда выполнения не поддерживает Intl, Luxon
может:
Современные браузеры и Node.js обычно полностью поддерживают
Intl, поэтому этот сценарий встречается редко.
Метод является лёгким, но не полностью “нулевой стоимости”:
IntlПример кеширования:
const cache = new Map();
function getWeekdays(locale) {
if (!cache.has(locale)) {
cache.set(locale, Info.weekdays("long", { locale }));
}
return cache.get(locale);
}
Info.weekdays не зависит от конкретной даты и
времени:
DateTimeДля работы с конкретной датой используется:
DateTime.weekdayDateTime.toFormat("cccc")| Формат | Пример (en-US) | Особенности |
|---|---|---|
| long | Monday | Полные названия |
| short | Mon | Универсальные сокращения |
| narrow | M | Минимальные формы |
| numeric | 1–7 | Зависит от локали |
При построении мультиязычных интерфейсов метод используется как источник стабильных заголовков:
Его ценность заключается в том, что он устраняет необходимость поддерживать словари локализации вручную.
narrow-форматеIntlInfo.weekdays часто используется вместе с:
Info.months — названия месяцевInfo.weekdaysFormat (в некоторых версиях Luxon)DateTime.toLocaleStringКомбинация позволяет полностью локализовать календарные интерфейсы без внешних библиотек перевода.