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()возвращает месяц поUTCgetMonth()возвращает месяц по локальному времени
Обычно результат одинаковый, но возле границы месяца он может отличаться.
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, если вы хотите показать привычный номер месяца пользователю.