function printMonth(year: number, month: number): void {
const first = new Date(year, month - 1, 1);
const daysInMonth = new Date(year, month, 0).getDate();
const monthName = first.toLocaleString("default", { month: "long" });
console.log(` ${monthName} ${year}`);
console.log("Su Mo Tu We Th Fr Sa");
// Sunday = 0, Monday = 1, ..., Saturday = 6
const offset = first.getDay();
let line = "";
for (let i = 0; i < offset; i++) {
line += " ";
}
for (let day = 1; day <= daysInMonth; day++) {
line += day.toString().padStart(2, " ") + " ";
if ((offset + day) % 7 === 0) {
console.log(line);
line = "";
}
}
if (line.length > 0) console.log(line);
}
printMonth(2026, 1);
/*
run:
" January 2026"
"Su Mo Tu We Th Fr Sa"
" 1 2 3 "
" 4 5 6 7 8 9 10 "
"11 12 13 14 15 16 17 "
"18 19 20 21 22 23 24 "
"25 26 27 28 29 30 31 "
*/