How to print a calendar for a specific month and year in PHP

1 Answer

0 votes
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 

*/

 



answered Jan 18 by avibootz

Related questions

...