Learn JavaScript

getMonth() - получение месяца из даты в JavaScript

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

Если говорить просто, этот метод достаёт номер месяца из даты. Но здесь есть важный нюанс: месяцы в JavaScript начинаются не с 1, а с 0.

Синтаксис

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

date.getMonth()

Где:

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

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

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

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

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

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

Это важно:

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

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

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

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

Здесь:

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

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

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

const date = new Date(2025, 11, 25);

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

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

getMonth() не возвращает “обычный” номер месяца

Это самая частая ошибка.

Многие ожидают, что январь будет 1, февраль 2, и так далее. Но getMonth() работает иначе.

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

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

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

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

console.log(month); // 1

Как получить название месяца

Сам getMonth() возвращает только число, а не текст.

Поэтому для простых задач часто используют массив с названиями месяцев.

const months = [
  "январь",
  "февраль",
  "март",
  "апрель",
  "май",
  "июнь",
  "июль",
  "август",
  "сентябрь",
  "октябрь",
  "ноябрь",
  "декабрь",
];

const date = new Date(2025, 2, 15);

console.log(months[date.getMonth()]); // "март"

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

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

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

const date = new Date(2025, 0, 15);
const month = date.getMonth();

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

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

Эти методы очень часто путают.

  • getMonth() возвращает месяц
  • getDate() возвращает день месяца
const date = new Date(2025, 0, 15);

console.log(date.getMonth()); // 0
console.log(date.getDate()); // 15

То есть:

  • getMonth() отвечает за месяц
  • getDate() отвечает за число месяца

getMonth() работает по локальному времени

Это важный момент.

Метод getMonth() смотрит на дату с точки зрения локального часового пояса пользователя.

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

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

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

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

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

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

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

Если вы работаете с серверным временем, ISO-строками и UTC, этот нюанс полезно помнить.

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

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

  • нужно получить месяц из даты
  • вы группируете записи по месяцам
  • хотите вывести месяц пользователю
  • сравниваете даты по месяцу

Пример:

const createdAt = new Date("2025-07-10");

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

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

Проверка месяца у разных дат

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

const first = new Date(2025, 0, 1);
const second = new Date(2025, 6, 1);

console.log(first.getMonth()); // 0
console.log(second.getMonth()); // 6

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

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

const date = new Date("invalid");

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

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

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

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

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

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

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

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

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

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

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

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

В JavaScript январь - это 0.

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

const month = new Date(2025, 0, 15).getMonth();

console.log(month); // 0

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

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

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

console.log(date.getMonth()); // 0
console.log(date.getDate()); // 15

Это два разных метода.

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

Правильно:

const date = new Date();

console.log(date.getMonth());

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

Date.getMonth();

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

Забывать про локальное время

getMonth() использует локальный часовой пояс пользователя.

Если важен именно UTC, лучше смотреть в сторону getUTCMonth().

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

const date = new Date("invalid");

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

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

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

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

Коротко

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