package timeext import "time" func WeekStart(year, week int) time.Time { // https://stackoverflow.com/a/52303730/1761622 // Start from the middle of the year: t := time.Date(year, 7, 1, 0, 0, 0, 0, time.UTC) // Roll back to Monday: if wd := t.Weekday(); wd == time.Sunday { t = t.AddDate(0, 0, -6) } else { t = t.AddDate(0, 0, -int(wd)+1) } // Difference in weeks: _, w := t.ISOWeek() t = t.AddDate(0, 0, (week-w)*7) return t } func WeekEnd(year, week int) time.Time { return WeekStart(year, week).AddDate(0, 0, 7).Add(time.Duration(-1)) }