Как получить первый и последний день месяца
Короткий ответ
Первый день — это день 1. День 0 следующего месяца — последний день текущего:
const year = 2025;
const month = 1;
const first = new Date(year, month, 1);
const last = new Date(year, month + 1, 0);
console.log(first.toDateString());
console.log(last.toDateString());Результат:
Sat Feb 01 2025
Fri Feb 28 2025Число дней
Тот же приём даёт число дней в месяце:
const daysInMonth = (year, month) => new Date(year, month + 1, 0).getDate();
console.log(daysInMonth(2024, 1), daysInMonth(2025, 1), daysInMonth(2025, 11));Результат:
29 28 31Для текущего месяца
Возьмите год и месяц из сегодняшней даты:
const today = new Date();
const first = new Date(today.getFullYear(), today.getMonth(), 1);
console.log(first.getDate());Результат:
1Частая ошибка
Месяц в конструкторе считается с нуля. new Date(2025, 12, 0) — не ошибка: месяц 12 — это январь следующего года, а его день 0 — 31 декабря:
console.log(new Date(2025, 12, 0).toDateString());Результат:
Wed Dec 31 2025Функции из этого ответа
- Date.prototype.getDate — Возвращает день месяца.
- Date.prototype.getMonth — Возвращает месяц — число от 0 до 11.