golang 获取当前年月日周
func WeekByDate(t time.Time) (y int, m int, w int, d 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 {
if (yearDay-firstWeekDays)%7 > 0 {
week = (yearDay-firstWeekDays)/7 + 2
} else {
week = (yearDay-firstWeekDays)/7 + 1
}
}
m, _ = strconv.Atoi(t.Format("1"))
day := t.Format(LayoutDate)
//fmt.Println(t.Year(),m, week,day)
return t.Year(), m, week, day
}