package main
import (
"fmt"
"time"
)
/*
This program determines the day of the week for January 1st of a given year.
Approach:
---------
Go provides built‑in date/time handling through the time package:
- time.Date(year, month, day, hour, min, sec, nsec, location)
- t.Weekday() : returns a time.Weekday value (Sunday..Saturday)
Weekday values:
time.Sunday, time.Monday, time.Tuesday, time.Wednesday,
time.Thursday, time.Friday, time.Saturday
This avoids manual calendar arithmetic and uses efficient built‑in routines.
*/
// Convert time.Weekday to a readable string
func weekdayName(wd time.Weekday) string {
return wd.String() // Already returns "Monday", "Tuesday", etc.
}
// Compute weekday of January 1st for a given year
func jan1Weekday(year int) string {
// January 1st at midnight, using the local system timezone
dateValue := time.Date(year, time.January, 1, 0, 0, 0, 0, time.Local)
return weekdayName(dateValue.Weekday())
}
func main() {
year := 2026
result := jan1Weekday(year)
fmt.Printf("January 1st, %d falls on a %s.\n", year, result)
}
/*
run:
January 1st, 2026 falls on a Thursday.
*/