package utils import "time" // IsOverlap 判断两个时间段是否有重叠 func IsOverlap(start1, end1, start2, end2 string) bool { layout := "2006-01-02" startTime1, _ := time.Parse(layout, start1) endTime1, _ := time.Parse(layout, end1) startTime2, _ := time.Parse(layout, start2) endTime2, _ := time.Parse(layout, end2) // 如果一个时间段的开始时间在另一个时间段之后,或结束时间在另一个时间段之前,则无重叠 if startTime1.After(endTime2) || endTime1.Before(startTime2) { return false } return true } func GetMonthByOffset(offset int) time.Time { return time.Now().AddDate(0, offset, 0) } // GetLastMonthPeriod 返回上个月的月初时间和月末时间 func GetLastMonthPeriod(now time.Time) (firstDay time.Time, lastDay time.Time) { // 获取本个月的第一天的日期(即本月月初) firstDayOfThisMonth := time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, now.Location()) nextMonth := now.AddDate(0, 1, 0) // 获取下月第一天的日期(即下个月月初) firstDayOfNextMonth := time.Date(nextMonth.Year(), nextMonth.Month(), 1, 0, 0, 0, 0, now.Location()) // 下个月月末时间即为本月月初减去一秒 lastDayOfThisMonth := firstDayOfNextMonth.Add(-time.Second) return firstDayOfThisMonth, lastDayOfThisMonth } func GetMonthDuration(d time.Time) (duration int) { return d.AddDate(0, 1, -1).Day() }