How to print a calendar for a specific month and year in C#

1 Answer

0 votes
using System;
using System.Globalization;

class CalendarPrinter
{
    public static void PrintMonth(int year, int month) {
        var firstDay = new DateTime(year, month, 1);
        int daysInMonth = DateTime.DaysInMonth(year, month);
        string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month);

        Console.WriteLine($"     {monthName} {year}");
        Console.WriteLine("Su Mo Tu We Th Fr Sa");

        // Sunday = 0, Monday = 1, ..., Saturday = 6
        int offset = (int)firstDay.DayOfWeek;

        for (int i = 0; i < offset; i++) 
            Console.Write("   ");

        for (int day = 1; day <= daysInMonth; day++) {
            Console.Write($"{day,2} ");
            if ((offset + day) % 7 == 0)
                Console.WriteLine();
        }

        Console.WriteLine();
    }

    static void Main()
    {
        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 

*/

 



answered Jan 18 by avibootz

Related questions

...