package utils import "time" // 获取今天的日期(零点零分零秒) func Today() time.Time { now := time.Now() return time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()) } // 获取明天的日期(零点零分零秒) func Tomorrow() time.Time { return Today().AddDate(0, 0, 1) } // 获取最近7天的日期范围 func Last7Days() (time.Time, time.Time) { today := Today() return today.AddDate(0, 0, -6), today.Add(time.Hour * 23).Add(time.Minute * 59).Add(time.Second * 59) } // 获取上周的日期范围 func LastWeek() (time.Time, time.Time) { start := Today().AddDate(0, 0, -7) end := start.AddDate(0, 0, 6).Add(time.Hour * 23).Add(time.Minute * 59).Add(time.Second * 59) return start, end } // 获取本周的日期范围 func ThisWeek() (time.Time, time.Time) { start := Today().Round(0).Local().AddDate(0, 0, 0-int(time.Now().Weekday())+1) // 0是本周的第一天,+1是因为AddDate是相对于当前时间的 end := start.AddDate(0, 0, 6).Add(time.Hour * 23).Add(time.Minute * 59).Add(time.Second * 59) return start, end } // 获取下周的日期范围 func NextWeek() (time.Time, time.Time) { _, thisEnd := ThisWeek() start := thisEnd.AddDate(0, 0, 1) end := start.AddDate(0, 0, 6).Add(time.Hour * 23).Add(time.Minute * 59).Add(time.Second * 59) return start, end } // 获取上月的日期范围 func LastMonth() (time.Time, time.Time) { today := time.Now() year, month, _ := today.Date() start := time.Date(year, month-1, 1, 0, 0, 0, 0, today.Location()) end := time.Date(year, month, 0, 23, 59, 59, 999999999, today.Location()) return start, end } // 获取本月的日期范围 func ThisMonth() (time.Time, time.Time) { today := time.Now() year, month, _ := today.Date() start := time.Date(year, month, 1, 0, 0, 0, 0, today.Location()) end := time.Date(year, month+1, 0, 23, 59, 59, 999999999, today.Location()) return start, end } // 获取下月的日期范围 func NextMonth() (time.Time, time.Time) { now := time.Now() year, month, _ := now.Date() nextMonth := month + 1 if nextMonth > 12 { nextMonth = 1 year++ } startOfNextMonth := time.Date(year, nextMonth, 1, 0, 0, 0, 0, now.Location()) endOfNextMonth := startOfNextMonth.AddDate(0, 1, -1).Add(time.Hour*23 + time.Minute*59 + time.Second*59) return startOfNextMonth, endOfNextMonth }