Learn JavaScript

getUTCDay() - получение дня недели по UTC в JavaScript

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() возвращает день недели по UTC
  • getUTCDate() возвращает день месяца по 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() возвращает день недели по UTC
  • getDay() возвращает день недели по локальному времени

Обычно результат одинаковый, но возле границы суток он может отличаться.

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