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, если вы хотите показать привычный номер месяца пользователю.