Imports System
Imports System.Globalization
Module CalendarPrinter
Sub PrintYear(year As Integer)
For month = 1 To 12
PrintMonth(year, month)
Console.WriteLine()
Next
End Sub
Private Sub PrintMonth(year As Integer, month As Integer)
Dim firstDay = New DateTime(year, month, 1)
Dim monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month)
Console.WriteLine()
Console.WriteLine($"{monthName} {year}".PadLeft(20))
Console.WriteLine("Su Mo Tu We Th Fr Sa")
' Sunday = 0, Monday = 1, ... in .NET DayOfWeek enum
Dim indent = CInt(firstDay.DayOfWeek)
For i = 1 To indent
Console.Write(" ")
Next
Dim daysInMonth = DateTime.DaysInMonth(year, month)
For day = 1 To daysInMonth
Console.Write($"{day,2} ")
If (indent + day) Mod 7 = 0 Then
Console.WriteLine()
End If
Next
Console.WriteLine()
End Sub
Sub Main()
PrintYear(2026)
End Sub
End Module
' 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
'
'
'
' February 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
'
'
'
' March 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
'
'
' April 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
'
'
' May 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
'
'
' June 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
'
'
' July 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
'
'
' August 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
'
'
' September 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
'
'
' October 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
'
'
'
' November 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
'
'
' December 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
'