Krok 13: funkcja dla dowolnego miesiąca

Kalendarz w konsoli krok po kroku - Kalendarz w JavaScript krok po kroku (JavaScript)

Ostatni krok: cały kalendarz trafia do funkcji `printCalendar(year, month, today)`, a stałe z góry programu stają się jej parametrami. Teraz jednym wywołaniem wypisujemy dowolny miesiąc, na przykład trzy kolejne. Dzisiejszy dzień zaznacza się tylko w swoim miesiącu.

const MONTHS = ['styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec',
  'lipiec', 'sierpień', 'wrzesień', 'październik', 'listopad', 'grudzień'];
const RED = '\x1b[31m';
const INVERSE = '\x1b[7m';
const RESET = '\x1b[0m';

function printCalendar(year, month, today) {
  const firstDay = (new Date(year, month - 1, 1).getDay() + 6) % 7; // 0 = poniedziałek
  const days = new Date(year, month, 0).getDate();
  const title = MONTHS[month - 1] + ' ' + year;
  console.log(title.padStart(Math.floor((20 + title.length) / 2)));
  console.log('Pn Wt Śr Cz Pt ' + RED + 'So Nd' + RESET);
  let line = '   '.repeat(firstDay);
  for (let i = 1; i <= days; i++) {
    let cell = String(i).padStart(2);
    const column = (firstDay + i - 1) % 7;
    if (column >= 5) cell = RED + cell + RESET;
    const isToday = today.getFullYear() === year && today.getMonth() + 1 === month && today.getDate() === i;
    if (isToday) cell = INVERSE + cell + RESET;
    line += cell + ' ';
    if ((firstDay + i) % 7 === 0) {
      console.log(line);
      line = '';
    }
  }
  if (line !== '') console.log(line);
}

const today = new Date(2026, 10, 13); // w prawdziwym programie: new Date()
printCalendar(2026, 11, today);
console.log('');
printCalendar(2026, 12, today);
console.log('');
printCalendar(2027, 1, today);

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Kalendarz w JavaScript krok po kroku·Zaloguj się, aby zapisać postęp na koncie.