Home >Backend Development >Golang >Golang gets the current week of the week
In Go language, use the import keyword to import a package, and the name of the package is wrapped in double quotes ("").
Golang determines which week the current time is:
func main() { l, _ := time.LoadLocation("Asia/Shanghai") startTime,_ := time.ParseInLocation("2006-01-02", "2018-12-22", l) endTime,_ := time.ParseInLocation("2006-01-02", "2019-05-17", l) datas := GroupByWeekDate(startTime, endTime) for _, d := range datas { fmt.Println(d) } } //判断时间是当年的第几周 func WeekByDate(t time.Time) string { yearDay := t.YearDay() yearFirstDay := t.AddDate(0, 0, -yearDay+1) firstDayInWeek := int(yearFirstDay.Weekday()) //今年第一周有几天 firstWeekDays := 1 if firstDayInWeek != 0 { firstWeekDays = 7 - firstDayInWeek + 1 } var week int if yearDay <= firstWeekDays { week = 1 } else { week = (yearDay-firstWeekDays)/7 + 2 } return fmt.Sprintf("%d第%d周", t.Year(), week) } type WeekDate struct { WeekTh string StartTime time.Time EndTime time.Time } // 将开始时间和结束时间分割为周为单位 func GroupByWeekDate(startTime, endTime time.Time) []WeekDate { weekDate := make([]WeekDate, 0) diffDuration := endTime.Sub(startTime) days := int(math.Ceil(float64(diffDuration / (time.Hour * 24))))+1 currentWeekDate := WeekDate{} currentWeekDate.WeekTh = WeekByDate(endTime) currentWeekDate.EndTime = endTime currentWeekDay := int(endTime.Weekday()) if currentWeekDay == 0 { currentWeekDay = 7 } currentWeekDate.StartTime = endTime.AddDate(0, 0, -currentWeekDay+1) nextWeekEndTime := currentWeekDate.StartTime weekDate = append(weekDate, currentWeekDate) for i := 0; i < (days-currentWeekDay)/7; i++ { weekData := WeekDate{} weekData.EndTime = nextWeekEndTime weekData.StartTime = nextWeekEndTime.AddDate(0, 0, -7) weekData.WeekTh = WeekByDate(weekData.StartTime) nextWeekEndTime = weekData.StartTime weekDate = append(weekDate, weekData) } if lastDays := (days - currentWeekDay) % 7; lastDays > 0 { lastData := WeekDate{} lastData.EndTime = nextWeekEndTime lastData.StartTime = nextWeekEndTime.AddDate(0, 0, - lastDays) lastData.WeekTh = WeekByDate(lastData.StartTime) weekDate = append(weekDate, lastData) } return weekDate }
Result:
{2019第20周 2019-05-13 00:00:00 +0800 CST 2019-05-17 00:00:00 +0800 CST} {2019第19周 2019-05-06 00:00:00 +0800 CST 2019-05-13 00:00:00 +0800 CST} {2019第18周 2019-04-29 00:00:00 +0800 CST 2019-05-06 00:00:00 +0800 CST} {2019第17周 2019-04-22 00:00:00 +0800 CST 2019-04-29 00:00:00 +0800 CST} {2019第16周 2019-04-15 00:00:00 +0800 CST 2019-04-22 00:00:00 +0800 CST} {2019第15周 2019-04-08 00:00:00 +0800 CST 2019-04-15 00:00:00 +0800 CST} {2019第14周 2019-04-01 00:00:00 +0800 CST 2019-04-08 00:00:00 +0800 CST} {2019第13周 2019-03-25 00:00:00 +0800 CST 2019-04-01 00:00:00 +0800 CST} {2019第12周 2019-03-18 00:00:00 +0800 CST 2019-03-25 00:00:00 +0800 CST} {2019第11周 2019-03-11 00:00:00 +0800 CST 2019-03-18 00:00:00 +0800 CST} {2019第10周 2019-03-04 00:00:00 +0800 CST 2019-03-11 00:00:00 +0800 CST} {2019第9周 2019-02-25 00:00:00 +0800 CST 2019-03-04 00:00:00 +0800 CST} {2019第8周 2019-02-18 00:00:00 +0800 CST 2019-02-25 00:00:00 +0800 CST} {2019第7周 2019-02-11 00:00:00 +0800 CST 2019-02-18 00:00:00 +0800 CST} {2019第6周 2019-02-04 00:00:00 +0800 CST 2019-02-11 00:00:00 +0800 CST} {2019第5周 2019-01-28 00:00:00 +0800 CST 2019-02-04 00:00:00 +0800 CST} {2019第4周 2019-01-21 00:00:00 +0800 CST 2019-01-28 00:00:00 +0800 CST} {2019第3周 2019-01-14 00:00:00 +0800 CST 2019-01-21 00:00:00 +0800 CST} {2019第2周 2019-01-07 00:00:00 +0800 CST 2019-01-14 00:00:00 +0800 CST} {2018第53周 2018-12-31 00:00:00 +0800 CST 2019-01-07 00:00:00 +0800 CST} {2018第52周 2018-12-24 00:00:00 +0800 CST 2018-12-31 00:00:00 +0800 CST} {2018第51周 2018-12-22 00:00:00 +0800 CST 2018-12-24 00:00:00 +0800 CST}
For more golang knowledge, please pay attention to the golang tutorial column.
The above is the detailed content of Golang gets the current week of the week. For more information, please follow other related articles on the PHP Chinese website!