getDay() возвращает день недели из объекта Date.
Если говорить просто, этот метод отвечает не за число месяца, а за день недели: воскресенье, понедельник, вторник и так далее.
Синтаксис
Базовая запись выглядит так:
date.getDay()
Где:
date- это объектDate
Аргументы этому методу не нужны.
Что возвращает getDay()
Метод возвращает число от 0 до 6.
const date = new Date(2025, 0, 15);
console.log(date.getDay()); // 3
console.log(typeof date.getDay()); // "number"
Значения здесь такие:
0- воскресенье1- понедельник2- вторник3- среда4- четверг5- пятница6- суббота
Простой пример
const date = new Date(2025, 0, 15);
console.log(date.getDay()); // 3
Это значит, что 15 января 2025 года приходится на среду.
Пример с воскресеньем и понедельником
const sunday = new Date(2025, 0, 12);
const monday = new Date(2025, 0, 13);
console.log(sunday.getDay()); // 0
console.log(monday.getDay()); // 1
Так хорошо видно, что в JavaScript неделя начинается с воскресенья.
getDay() не возвращает день месяца
Это самая частая ошибка.
Многие видят слово Day и думают, что метод вернёт число месяца, например 15 или 31. Но это не так.
getDay() возвращает именно день недели.
const date = new Date(2025, 0, 15);
console.log(date.getDay()); // 3
Чем getDay() отличается от getDate()
Эти методы очень часто путают.
getDay()возвращает день неделиgetDate()возвращает день месяца
const date = new Date(2025, 0, 15);
console.log(date.getDay()); // 3
console.log(date.getDate()); // 15
То есть:
getDay()отвечает за день неделиgetDate()отвечает за число месяца
Как получить название дня недели
Сам getDay() возвращает только число, а не текст.
Поэтому для простых задач часто используют массив с названиями дней недели.
const days = [
"воскресенье",
"понедельник",
"вторник",
"среда",
"четверг",
"пятница",
"суббота",
];
const date = new Date(2025, 0, 15);
console.log(days[date.getDay()]); // "среда"
Проверка на выходной
getDay() часто используют, чтобы понять, выходной день или нет.
const today = new Date();
const day = today.getDay();
if (day === 0 || day === 6) {
console.log("Сегодня выходной");
}
Здесь:
0- воскресенье6- суббота
getDay() не меняет дату
Метод только читает значение дня недели.
Он не изменяет исходный объект Date.
const date = new Date(2025, 0, 15);
const day = date.getDay();
console.log(day); // 3
console.log(date); // исходная дата остаётся той же
getDay() работает по локальному времени
Это важный момент.
Метод getDay() смотрит на дату с точки зрения локального часового пояса пользователя.
Если вам нужен день недели именно по UTC, используют getUTCDay().
Чем getDay() отличается от getUTCDay()
Разница такая:
getDay()возвращает день недели по локальному времениgetUTCDay()возвращает день недели поUTC
Обычно результат одинаковый, но возле границы суток он может отличаться.
const date = new Date(Date.UTC(2025, 0, 12, 0, 0, 0));
console.log(date.getUTCDay()); // 0
Если вы работаете с серверным временем, ISO-строками и UTC, этот нюанс полезно помнить.
Когда это полезно
getDay() особенно удобен, когда:
- нужно узнать день недели
- вы проверяете, выходной сегодня или рабочий день
- хотите вывести название дня недели пользователю
- строите календарь или расписание
Пример:
const meeting = new Date("2025-01-15");
if (meeting.getDay() === 3) {
console.log("Встреча в среду");
}
Невалидная дата даёт NaN
Если объект Date содержит некорректную дату, результатом будет NaN.
const date = new Date("invalid");
console.log(date.getDay()); // NaN
Это полезно помнить, если дата приходит из формы, API или пользовательского ввода.
getDay() не создаёт дату и не форматирует строку
Этот метод не создаёт новую дату и не превращает её в текст.
Он только возвращает номер дня недели.
const date = new Date(2025, 0, 15);
console.log(date.getDay()); // 3
Если нужен человекочитаемый текст, его придётся формировать отдельно.
Частые ошибки
Путать getDay() и getDate()
const date = new Date(2025, 0, 15);
console.log(date.getDay()); // 3
console.log(date.getDate()); // 15
getDay() возвращает день недели, а getDate() - число месяца.
Ожидать, что понедельник будет 0
const date = new Date(2025, 0, 13);
console.log(date.getDay()); // 1
В JavaScript 0 - это воскресенье, а не понедельник.
Вызывать getDay() не у объекта Date
Правильно:
const date = new Date();
console.log(date.getDay());
Неправильно:
Date.getDay();
Метод getDay() работает у экземпляра Date, а не у самого объекта Date.
Забывать про локальное время
getDay() использует локальный часовой пояс пользователя.
Если важен именно UTC, лучше смотреть в сторону getUTCDay().
Не учитывать NaN у невалидной даты
const date = new Date("invalid");
console.log(date.getDay()); // NaN
Если дата может быть некорректной, полезно сначала проверить сам объект даты.
Быстрая памятка
getDay()вызывается у объектаDate- метод возвращает день недели числом
- диапазон значений: от
0до6 0- воскресенье,6- субботаgetDay()не возвращает день месяца- для дня месяца есть
getDate() getDay()работает по локальному времени- для
UTCестьgetUTCDay() - у невалидной даты результатом будет
NaN
Коротко
getDay() в JavaScript нужен, чтобы получить день недели из объекта Date. Главное, что стоит запомнить: метод возвращает число от 0 до 6, где 0 - это воскресенье, работает по локальному времени, не изменяет саму дату и его очень важно не путать с getDate(), который отвечает уже за число месяца.