В библиотеке Luxon день недели извлекается через свойство
weekday. Оно возвращает номер дня в формате ISO-8601:
| День | Значение |
|---|---|
| Понедельник | 1 |
| Вторник | 2 |
| Среда | 3 |
| Четверг | 4 |
| Пятница | 5 |
| Суббота | 6 |
| Воскресенье | 7 |
import { DateTime } from "luxon";
const date = DateTime.now();
console.log(date.weekday);
Пример результата:
5
Важно учитывать, что в Luxon неделя начинается с понедельника, а не с
воскресенья, как во встроенном объекте Date в
JavaScript.
Для получения полного названия дня используется свойство
weekdayLong.
const date = DateTime.now();
console.log(date.weekdayLong);
Результат:
Friday
Краткое название:
console.log(date.weekdayShort);
Результат:
Fri
Минимальное сокращение:
console.log(date.weekdayNarrow);
Результат:
F
Luxon поддерживает локализацию через метод
setLocale().
const date = DateTime.now().setLocale("ru");
console.log(date.weekdayLong);
Результат:
пятница
Короткий вариант:
console.log(date.weekdayShort);
Результат:
пт
Пример с другими языками:
DateTime.now()
.setLocale("fr")
.weekdayLong;
Результат:
vendredi
const date = DateTime.fromISO("2025-12-31");
console.log(date.weekdayLong);
Результат:
Wednesday
toFormatМетод toFormat() позволяет гибко выводить день
недели.
date.toFormat("cccc");
Результат:
Wednesday
date.toFormat("ccc");
Результат:
Wed
date.toFormat("ccccc");
Результат:
W
date.toFormat("c");
Результат:
3
Значения также соответствуют ISO-формату:
1 weekday
const date = DateTime.now();
const isWeekend = date.weekday === 6 || date.weekday === 7;
console.log(isWeekend);
const isWorkday = date.weekday >= 1 && date.weekday <= 5;
console.log(isWorkday);
switchswitch (date.weekday) {
case 1:
console.log("Понедельник");
break;
case 2:
console.log("Вторник");
break;
case 3:
console.log("Среда");
break;
case 4:
console.log("Четверг");
break;
case 5:
console.log("Пятница");
break;
case 6:
case 7:
console.log("Выходной");
break;
}
const first = DateTime.fromISO("2025-05-01");
const second = DateTime.fromISO("2025-05-08");
console.log(first.weekday === second.weekday);
Результат:
true
const now = DateTime.now();
const nextMonday = now.plus({
days: 8 - now.weekday
});
console.log(nextMonday.toISODate());
const now = DateTime.now();
const previousSunday = now.minus({
days: now.weekday % 7
});
console.log(previousSunday.toISODate());
const start = DateTime.now().startOf("week");
console.log(start.toString());
const end = DateTime.now().endOf("week");
console.log(end.toString());
В Luxon неделя всегда начинается с понедельника.
const start = DateTime.now().startOf("week");
for (let i = 0; i < 7; i++) {
const day = start.plus({ days: i });
console.log(day.weekdayLong);
}
const days = [];
const start = DateTime.now().startOf("week");
for (let i = 0; i < 7; i++) {
days.push(
start.plus({ days: i }).weekdayLong
);
}
console.log(days);
function countWorkdays(start, end) {
let current = start;
let count = 0;
while (current <= end) {
if (current.weekday <= 5) {
count++;
}
current = current.plus({ days: 1 });
}
return count;
}
const start = DateTime.fromISO("2025-05-01");
const end = DateTime.fromISO("2025-05-31");
console.log(
countWorkdays(start, end)
);
const dates = [
DateTime.fromISO("2025-05-01"),
DateTime.fromISO("2025-05-02"),
DateTime.fromISO("2025-05-03"),
DateTime.fromISO("2025-05-04")
];
const weekends = dates.filter(date => {
return date.weekday >= 6;
});
console.log(weekends);
const lessons = {
1: "Математика",
2: "Физика",
3: "Информатика",
4: "История",
5: "Биология"
};
const today = DateTime.now();
console.log(
lessons[today.weekday]
);
const names = {
1: "Понедельник",
2: "Вторник",
3: "Среда",
4: "Четверг",
5: "Пятница",
6: "Суббота",
7: "Воскресенье"
};
const date = DateTime.now();
console.log(
names[date.weekday]
);
День недели зависит от часового пояса.
const moscow = DateTime
.now()
.setZone("Europe/Moscow");
const tokyo = DateTime
.now()
.setZone("Asia/Tokyo");
console.log(moscow.weekdayLong);
console.log(tokyo.weekdayLong);
Из-за разницы во времени в разных зонах день недели может отличаться.
const timestamp = 1746700000;
const date = DateTime.fromSeconds(timestamp);
console.log(date.weekdayLong);
Info.weekdaysLuxon предоставляет встроенный список названий дней недели.
import { Info } from "luxon";
console.log(
Info.weekdays()
);
Результат:
[
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
]
console.log(
Info.weekdays("long", {
locale: "ru"
})
);
Результат:
[
"понедельник",
"вторник",
"среда",
"четверг",
"пятница",
"суббота",
"воскресенье"
]
Info.weekdays("short");
Результат:
[
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
"Sun"
]
Info.weekdays("narrow");
Результат:
[
"M",
"T",
"W",
"T",
"F",
"S",
"S"
]
const date = DateTime.now();
console.log(date.weekNumber);
console.log(date.weekday);
Luxon полностью ориентирован на ISO-8601 при работе с неделями.
Основные правила:
7;DateВстроенный JavaScript Date использует метод
getDay():
| День | Date.getDay() |
Luxon.weekday |
|---|---|---|
| Воскресенье | 0 |
7 |
| Понедельник | 1 |
1 |
| Суббота | 6 |
6 |
Пример:
const native = new Date();
console.log(native.getDay());
const luxon = DateTime.now();
console.log(luxon.weekday);
0 и
7Во встроенном JavaScript воскресенье равно 0, а в Luxon
— 7.
Неверно:
if (date.weekday === 0)
Правильно:
if (date.weekday === 7)
Неверно:
DateTime.now().weekdayLong;
Ожидание русского языка без установки локали приведёт к английскому результату.
Правильно:
DateTime.now()
.setLocale("ru")
.weekdayLong;
DateTime.now().weekday
и
DateTime.now()
.setZone("Asia/Tokyo")
.weekday
могут возвращать разные значения.
const start = DateTime
.fromISO("2025-05-01")
.startOf("week");
for (let i = 0; i < 14; i++) {
const day = start.plus({ days: i });
console.log(
`${day.toISODate()} — ${day.weekdayLong}`
);
}
function isOfficeOpen(date) {
const isWeekend =
date.weekday === 6 ||
date.weekday === 7;
if (isWeekend) {
return false;
}
return date.hour >= 9 &&
date.hour < 18;
}
const now = DateTime.now();
console.log(
isOfficeOpen(now)
);
const tasks = {
1: ["Планирование"],
2: ["Разработка"],
3: ["Тестирование"],
4: ["Документация"],
5: ["Релиз"]
};
const today = DateTime.now();
console.log(
tasks[today.weekday] || []
);