12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package util
- import "time"
- // TimeRange 定义时间范围结构体
- type TimeRange struct {
- StartTime time.Time
- EndTime time.Time
- StartUnix int64
- EndUnix int64
- }
- // GetDayRange 计算当天的时间范围
- func GetDayRange(t time.Time) TimeRange {
- // 当天开始时间:00:00:00
- start := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location())
- // 当天结束时间:23:59:59
- end := start.Add(24*time.Hour - time.Second)
- return TimeRange{
- StartTime: start,
- EndTime: end,
- StartUnix: start.Unix(),
- EndUnix: end.Unix(),
- }
- }
- // GetWeekRange 计算当周的时间范围(周一到周日)
- func GetWeekRange(t time.Time) TimeRange {
- // 计算距离周一的天数
- weekday := int(t.Weekday())
- if weekday == 0 {
- weekday = 7 // 将周日(0)视为一周的最后一天
- }
- // 周一的开始时间:周一 00:00:00
- start := time.Date(t.Year(), t.Month(), t.Day()-weekday+1, 0, 0, 0, 0, t.Location())
- // 周日的结束时间:周日 23:59:59
- end := start.Add(7*24*time.Hour - time.Second)
- return TimeRange{
- StartTime: start,
- EndTime: end,
- StartUnix: start.Unix(),
- EndUnix: end.Unix(),
- }
- }
- // GetMonthRange 计算当月的时间范围
- func GetMonthRange(t time.Time) TimeRange {
- // 当月第一天的开始时间:第一天 00:00:00
- start := time.Date(t.Year(), t.Month(), 1, 0, 0, 0, 0, t.Location())
- // 下月第一天减一秒:当月最后一天 23:59:59
- end := start.AddDate(0, 1, 0).Add(-time.Second)
- return TimeRange{
- StartTime: start,
- EndTime: end,
- StartUnix: start.Unix(),
- EndUnix: end.Unix(),
- }
- }
|