m~r.Nemo,
function monthTable(month, year) {
const monthNames = [
'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь',
'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'
];
let calendar = { 0: ['Вс'], 1: ['Пн'], 2: ['Вт'], 3: ['Ср'], 4: ['Чт'], 5: ['Пт'], 6: ['Сб'] };
const now = new Date();
const m = month ? month - 1 : now.getMonth();
const y = year ? year : now.getFullYear();
const days = new Date(y, m + 1, 0).getDate();
let week = 1;
let start = new Date(y, m, 1).getDay();
for (let i = 0; i < days; i++) {
if (start % 7 === 1 && i > 0) {
week++;
}
if (calendar[start % 7].length !== week) {
calendar[start % 7].push(' ');
}
if (i < 9) {
calendar[start % 7].push(` ${i + 1}`);
} else {
calendar[start % 7].push(i + 1);
}
start++;
}
let txt = `${monthNames[m]}, ${y}`;
for (let i = 1; i < 8; i++) {
txt += `\n ${calendar[i % 7].join(' ')}`;
}
return txt
}
console.log(monthTable(5, 2015));
console.log(monthTable(2, 2020));
console.log(monthTable());