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

1 Answer

0 votes
package main

import (
    "fmt"
    "time"
)

func printMonth(year int, month time.Month) {
    first := time.Date(year, month, 1, 0, 0, 0, 0, time.Local)
    daysInMonth := time.Date(year, month+1, 0, 0, 0, 0, 0, time.Local).Day()
    monthName := first.Format("January")

    fmt.Printf("     %s %d\n", monthName, year)
    fmt.Println("Su Mo Tu We Th Fr Sa")

    offset := int(first.Weekday()) // Sunday=0

    for i := 0; i < offset; i++ {
        fmt.Print("   ")
    }

    for day := 1; day <= daysInMonth; day++ {
        fmt.Printf("%2d ", day)
        if (offset+day)%7 == 0 {
            fmt.Println()
        }
    }

    fmt.Println()
}

func main() {
    printMonth(2026, time.January)
}



/*
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 19 by avibootz

Related questions

...