Learn JavaScript

getUTCMonth() - получение месяца по UTC в JavaScript

getUTCMonth() возвращает месяц из объекта Date по UTC.

Если говорить просто, этот метод достаёт номер месяца из даты, но смотрит на неё не по локальному времени пользователя, а по всемирному времени UTC.

Синтаксис

Базовая запись выглядит так:

date.getUTCMonth()

Где:

  • date - это объект Date

Аргументы этому методу не нужны.

Что возвращает getUTCMonth()

Метод возвращает число от 0 до 11.

const date = new Date(Date.UTC(2025, 0, 15, 12, 0, 0));

console.log(date.getUTCMonth()); // 0
console.log(typeof date.getUTCMonth()); // "number"

Это важно:

  • 0 - январь
  • 1 - февраль
  • 2 - март
  • 11 - декабрь

Простой пример

const date = new Date(Date.UTC(2025, 2, 15, 12, 0, 0));

console.log(date.getUTCMonth()); // 2

Здесь:

  • 2025 - год
  • 2 - март
  • 15 - день месяца

Метод возвращает 2, потому что март в JavaScript обозначается числом 2.

Ещё пример с другим месяцем

const date = new Date(Date.UTC(2025, 11, 25, 8, 30, 0));

console.log(date.getUTCMonth()); // 11

Здесь 11 означает декабрь.

getUTCMonth() тоже возвращает месяц не с 1, а с 0

Это одна из самых частых ошибок.

Иногда кажется, что если метод работает по UTC, то и нумерация месяцев будет какой-то другой. Но это не так.

const january = new Date(Date.UTC(2025, 0, 1, 0, 0, 0));
const february = new Date(Date.UTC(2025, 1, 1, 0, 0, 0));

console.log(january.getUTCMonth()); // 0
console.log(february.getUTCMonth()); // 1

Если вам нужен привычный номер месяца для вывода пользователю, обычно делают так:

const date = new Date(Date.UTC(2025, 0, 15, 12, 0, 0));
const month = date.getUTCMonth() + 1;

console.log(month); // 1

getUTCMonth() не меняет дату

Метод только читает значение месяца.

Он не изменяет исходный объект Date.

const date = new Date(Date.UTC(2025, 0, 15, 12, 0, 0));
const month = date.getUTCMonth();

console.log(month); // 0
console.log(date); // исходная дата остаётся той же

getUTCMonth() работает именно по UTC

Это главный момент.

Метод getUTCMonth() всегда смотрит на дату с точки зрения UTC.

Если вам нужен месяц по локальному времени пользователя, используют getMonth().

Чем getUTCMonth() отличается от getMonth()

Разница такая:

  • getUTCMonth() возвращает месяц по UTC
  • getMonth() возвращает месяц по локальному времени

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

const date = new Date("2025-03-01T00:30:00+03:00");

console.log(date.toISOString()); // 2025-02-28T21:30:00.000Z
console.log(date.getMonth()); // 2
console.log(date.getUTCMonth()); // 1

В этом примере по локальному времени в строке уже март, а по UTC всё ещё февраль.

Если вы работаете с API, серверным временем, базой данных или ISO-строками, этот нюанс особенно важен.

Когда это полезно

getUTCMonth() особенно удобен, когда:

  • дата хранится в UTC
  • вы работаете с серверным временем
  • нужно одинаковое поведение независимо от часового пояса пользователя
  • вы разбираете ISO-строки и данные из API

Пример:

const createdAt = new Date("2025-07-01T00:30:00Z");

if (createdAt.getUTCMonth() === 6) {
  console.log("Запись создана в июле по UTC");
}

Июль здесь равен 6, потому что отсчёт идёт с нуля.

Проверка месяца у даты из ISO-строки

Метод удобно использовать, когда дата приходит в формате UTC.

const date = new Date("2025-11-10T08:30:00Z");

console.log(date.getUTCMonth()); // 10

Такой код предсказуемо работает именно по всемирному времени.

Невалидная дата даёт NaN

Если объект Date содержит некорректную дату, результатом будет NaN.

const date = new Date("invalid");

console.log(date.getUTCMonth()); // NaN

Это полезно помнить, если дата приходит из формы, API или пользовательского ввода.

getUTCMonth() не создаёт дату и не форматирует строку

Этот метод не создаёт новую дату и не превращает её в текст.

Он только возвращает номер месяца по UTC.

const date = new Date(Date.UTC(2025, 0, 15, 12, 0, 0));

console.log(date.getUTCMonth()); // 0

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

Частые ошибки

Ожидать, что январь будет 1

const date = new Date(Date.UTC(2025, 0, 15, 12, 0, 0));

console.log(date.getUTCMonth()); // 0

В JavaScript январь - это 0, даже в UTC.

Забывать прибавить 1 для вывода пользователю

const month = new Date(Date.UTC(2025, 0, 15, 12, 0, 0)).getUTCMonth();

console.log(month); // 0

Если нужен привычный номер месяца, обычно используют getUTCMonth() + 1.

Путать getUTCMonth() и getMonth()

const date = new Date("2025-03-01T00:30:00+03:00");

console.log(date.getMonth()); // 2
console.log(date.getUTCMonth()); // 1

Это два похожих метода, но они смотрят на дату в разных системах времени.

Вызывать getUTCMonth() не у объекта Date

Правильно:

const date = new Date();

console.log(date.getUTCMonth());

Неправильно:

Date.getUTCMonth();

Метод getUTCMonth() работает у экземпляра Date, а не у самого объекта Date.

Ожидать локальное время вместо UTC

getUTCMonth() специально работает по UTC, а не по часовому поясу пользователя.

Если нужен месяц по локальному времени, лучше использовать getMonth().

Не учитывать NaN у невалидной даты

const date = new Date("invalid");

console.log(date.getUTCMonth()); // NaN

Если дата может быть некорректной, полезно сначала проверить сам объект даты.

Быстрая памятка

  • getUTCMonth() вызывается у объекта Date
  • метод возвращает месяц числом
  • диапазон значений: от 0 до 11
  • январь - это 0, декабрь - это 11
  • аргументы методу не нужны
  • getUTCMonth() работает по UTC
  • для локального времени есть getMonth()
  • возле границы месяца результат может отличаться от getMonth()
  • у невалидной даты результатом будет NaN

Коротко

getUTCMonth() в JavaScript нужен, чтобы получить месяц из объекта Date по всемирному времени UTC. Главное, что стоит запомнить: метод возвращает число от 0 до 11, не зависит от локального часового пояса пользователя, не изменяет саму дату и часто требует + 1, если вы хотите показать привычный номер месяца пользователю.