Показать сообщение отдельно
  #3 (permalink)  
Старый 25.09.2019, 20:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,135

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());
Ответить с цитированием