Работа с датами и временем является одной из наиболее частых задач в разработке на JavaScript. Библиотека Moment.js значительно упрощает эти операции, предоставляя удобные методы для манипуляций с датами. Одной из типичных потребностей является определение количества дней в конкретном месяце, учитывая високосные годы и различия между месяцами.
daysInMonth()Основным инструментом для получения количества дней в месяце является
метод daysInMonth(). Он вызывается на
объекте Moment и возвращает целое число, представляющее количество дней
в текущем месяце объекта.
const moment = require('moment');
let date = moment('2026-05-21'); // Создание объекта Moment для 21 мая 2026 года
let days = date.daysInMonth(); // Получение количества дней в мае
console.log(days); // 31
Ключевые моменты метода
daysInMonth():
Number).Февраль является особенным месяцем, так как количество дней может быть 28 или 29 в зависимости от года:
let leapYear = moment('2024-02-01');
console.log(leapYear.daysInMonth()); // 29
let nonLeapYear = moment('2023-02-01');
console.log(nonLeapYear.daysInMonth()); // 28
Метод корректно определяет високосный год и возвращает соответствующее количество дней.
Если требуется узнать, сколько дней в текущем месяце, можно создать объект Moment без параметров:
let currentMonthDays = moment().daysInMonth();
console.log(currentMonthDays);
Это автоматически учитывает текущий год и месяц на момент выполнения скрипта.
Для получения количества дней в любом произвольном месяце можно
комбинировать метод moment() с указанием года и месяца:
function getDaysInMonth(year, month) {
// Месяцы в Moment.js индексируются с 0 (январь) до 11 (декабрь)
return moment({ year: year, month: month }).daysInMonth();
}
console.log(getDaysInMonth(2026, 4)); // Май 2026, 31 день
console.log(getDaysInMonth(2023, 1)); // Февраль 2023, 28 дней
Обратите внимание, что месяцы индексируются с нуля, что часто вызывает ошибки при прямом указании числа месяца.
Метод daysInMonth() особенно полезен в сочетании с
другими методами для расчётов:
let endOfMonth = moment('2026-05-21').endOf('month');
console.log(endOfMonth.format('YYYY-MM-DD')); // 2026-05-31
Количество дней в месяце можно использовать для генерации таблиц дней, проверок валидности дат и циклов для перебора дней месяца.
let month = moment('2026-05-01');
let totalDays = month.daysInMonth();
for (let day = 1; day <= totalDays; day++) {
console.log(day);
}
daysInMonth()Метод daysInMonth() является ключевым
инструментом для получения количества дней в месяце при работе с
Moment.js. Он удобен для динамического определения числа дней, корректно
обрабатывает високосные годы и может быть использован в широком спектре
задач — от генерации календарей до проверки корректности введённых
дат.