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