51 lines
1.6 KiB
Go
51 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
var n int // for task item 2
|
|
var first, last time.Time // for task item 3
|
|
haveNone := make([]int, 0, 29) // for extra credit
|
|
fmt.Println("Months with five weekends:") // for task item 1
|
|
for year := 1900; year <= 2100; year++ {
|
|
var hasOne bool // for extra credit
|
|
for _, month := range []time.Month{1, 3, 5, 7, 8, 10, 12} {
|
|
t := time.Date(year, month, 1, 0, 0, 0, 0, time.UTC)
|
|
if t.Weekday() == time.Friday {
|
|
// task item 1: show month
|
|
fmt.Println(" ", t.Format("2006 January"))
|
|
n++
|
|
hasOne = true
|
|
last = t
|
|
if first.IsZero() {
|
|
first = t
|
|
}
|
|
}
|
|
}
|
|
if !hasOne {
|
|
haveNone = append(haveNone, year)
|
|
}
|
|
}
|
|
fmt.Println(n, "total\n") // task item 2: number of months
|
|
// task item 3
|
|
fmt.Println("First five dates of weekends:")
|
|
for i := 0; i < 5; i++ {
|
|
fmt.Println(" ", first.Format("Monday, January 2, 2006"))
|
|
first = first.Add(7 * 24 * time.Hour)
|
|
}
|
|
fmt.Println("Last five dates of weekends:")
|
|
for i := 0; i < 5; i++ {
|
|
fmt.Println(" ", last.Format("Monday, January 2, 2006"))
|
|
last = last.Add(7 * 24 * time.Hour)
|
|
}
|
|
// extra credit
|
|
fmt.Println("\nYears with no months with five weekends:")
|
|
for _, y := range haveNone {
|
|
fmt.Println(" ", y)
|
|
}
|
|
fmt.Println(len(haveNone), "total")
|
|
}
|