function print_month(int $year, int $month): void
{
$first = new DateTime("$year-$month-01");
$daysInMonth = (int)$first->format('t');
$monthName = $first->format('F');
echo " $monthName $year\n";
echo "Su Mo Tu We Th Fr Sa\n";
// Sunday = 0, Monday = 1, ..., Saturday = 6
$offset = (int)$first->format('w');
for ($i = 0; $i < $offset; $i++) {
echo " ";
}
for ($day = 1; $day <= $daysInMonth; $day++) {
echo sprintf("%2d ", $day);
if (($offset + $day) % 7 === 0) {
echo "\n";
}
}
echo "\n";
}
print_month(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
*/