Learn JavaScript

getDay() - получение дня недели из даты в JavaScript

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(), который отвечает уже за число месяца.