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 32 33 34 35 36 37 38 39 40
| package awesome
import "time"
type WeekDate struct { ISOYear int ISOWeek int StartTime time.Time EndTime time.Time }
func groupByWeekDate(startTime, endTime time.Time) []WeekDate { startOffset := int(time.Monday - startTime.Weekday()) if startOffset > 0 { startOffset = -6 } startMonday := startTime.AddDate(0, 0, startOffset)
endOffset := int(7 - endTime.Weekday()) if endOffset == 7 { endOffset = 0 } endSunday := endTime.AddDate(0, 0, endOffset)
var res = make([]WeekDate, 0) for i := startMonday; i.Before(endSunday) || i.Equal(endSunday); i = i.AddDate(0, 0, 7) { iISOYear, iISOWeek := i.ISOWeek() var tmp = WeekDate{ ISOYear: iISOYear, ISOWeek: iISOWeek, StartTime: i, EndTime: i.AddDate(0, 0, 6), } res = append(res, tmp) }
return res }
|