GetMonth: примеры (JAVASCRIPT)

Функция getMonth для работы с датами в JavaScript
Раздел: Дата и время, Методы
getMonth: Number

Базовая информация о методе getMonth()

Метод getMonth() является частью объекта Date в JavaScript. Он применяется для получения порядкового номера месяца из даты, представленной этим объектом.

Принцип работы и возвращаемое значение

Метод не принимает аргументов. Он возвращает целое число от 0 до 11, где 0 соответствует январю, а 11 — декабрю. Это поведение часто становится источником ошибок, так как не соответствует привычной нумерации месяцев с единицы.

Область применения

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

Короткие примеры использования

Базовый пример получения номера месяца из текущей даты.

const now = new Date();
console.log(now.getMonth());
// Результат зависит от текущего месяца.
// Например, для ноября: 10

Получение месяца из конкретной даты.

const date = new Date('2024-07-15');
console.log(date.getMonth());
6 // Июль (июнь = 5, июль = 6)

Альтернативные методы в JavaScript

Intl.DateTimeFormat

Современный API для локализованного форматирования дат. Позволяет получить название месяца на нужном языке в разных форматах (полное, сокращенное, цифровое). Используется для корректного отображения дат для пользователей из разных регионов.

const date = new Date();
const monthName = new Intl.DateTimeFormat('ru-RU', { month: 'long' }).format(date);
console.log(monthName);
ноября

toLocaleDateString

Упрощенный метод для получения отформатированной строки с датой, включая месяц. Под капотом часто использует Intl.DateTimeFormat.

Аналоги функции в других языках

PHP: date('n')

Функция date() с форматом 'n' возвращает номер месяца от 1 до 12, что интуитивно понятнее.

echo date('n'); // Ноябрь
// 11
11

Python: datetime.month

Свойство month объекта datetime возвращает число от 1 до 12.

from datetime import datetime
print(datetime.now().month)
11

MySQL: MONTH()

Функция MONTH() извлекает месяц из даты в диапазоне 1–12.

SELECT MONTH('2024-07-15');
7

Типичные ошибки

Ошибка смещения на единицу

Самая частая ошибка — забыть, что нумерация начинается с нуля, и трактовать результат как обычный номер месяца.

const date = new Date('2024-01-15');
const wrongMonth = date.getMonth(); // 0
console.log(`Текущий месяц: ${wrongMonth}`); // Ожидается 1, но выводится 0
Текущий месяц: 0

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

Использование с неинициализированной датой

const invalidDate = new Date('некорректная строка');
console.log(invalidDate.getMonth());
NaN

История изменений

Метод getMonth() присутствует в JavaScript с самых первых версий (ECMAScript 1). Его поведение и сигнатура остаются неизменными на протяжении всей истории языка для обеспечения обратной совместимости.

Основные изменения связаны с контекстом: в ECMAScript 2015 (ES6) и позднее появились более удобные альтернативы для интернационализации, такие как Intl.DateTimeFormat, но сам getMonth() не модифицировался.

Расширенные примеры применения

Получение названия месяца по его номеру с помощью массива.

Пример javascript
const months = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];
const date = new Date();
const monthName = months[date.getMonth()];
console.log(monthName);
Ноябрь

Определение времени года (сезона) на основе месяца.

Пример javascript
function getSeason(date) {
    const month = date.getMonth();
    if (month >= 2 && month <= 4) return 'Весна';
    if (month >= 5 && month <= 7) return 'Лето';
    if (month >= 8 && month <= 10) return 'Осень';
    return 'Зима';
}
console.log(getSeason(new Date('2024-03-20')));
Весна

Подсчет разницы в месяцах между двумя датами.

Пример javascript
function monthDiff(dateFrom, dateTo) {
    return (dateTo.getFullYear() - dateFrom.getFullYear()) * 12 + (dateTo.getMonth() - dateFrom.getMonth());
}
const diff = monthDiff(new Date('2023-05-10'), new Date('2024-11-01'));
console.log(diff);
18

JS getMonth function comments

En
GetMonth Returns the month (0-11) in the specified date