package timeUtil import ( "time" ) // 检查一个日期的时分秒 是否在指定的时间范围内 // checkTime:待检查的时间 // timeSpan1:时间范围1 // addSecond1:需要加上的时间偏差值 // timeSpan2:时间范围2 // addSecond2:需要加上的时间偏差值 func CheckIfInRange(checkTime time.Time, timeSpan1 string, addSecond1 int, timeSpan2 string, addSecond2 int) bool { var ( hour1, minute1, second1 int hour2, minute2, second2 int ) // 取出字符串的时分秒 _, hour1, minute1, second1 = ParseTimeString(timeSpan1) _, hour2, minute2, second2 = ParseTimeString(timeSpan2) // 取出当前时间的时分秒 checkTime = checkTime.Local() hour := checkTime.Hour() minute := checkTime.Minute() second := checkTime.Second() // 转换成时间值 val := int64(time.Hour)*int64(hour) + int64(time.Minute)*int64(minute) + int64(time.Second)*int64(second) val1 := int64(time.Hour)*int64(hour1) + int64(time.Minute)*int64(minute1) + int64(time.Second)*int64((second1+addSecond1)) val2 := int64(time.Hour)*int64(hour2) + int64(time.Minute)*int64(minute2) + int64(time.Second)*int64((second2+addSecond2)) if val1 <= val && val <= val2 { return true } if val2 <= val && val <= val1 { return true } return false } // 检查一个日期的时分秒 是否在指定的时间范围内 // checkTime:待检查的时间 // timeSpan1:时间范围1 // timeSpan2:时间范围2 func CheckIfInRange2(checkTime time.Time, timeSpan1 string, timeSpan2 string) bool { return CheckIfInRange(checkTime, timeSpan1, 0, timeSpan2, 0) } // 检查两个日期是否在同一天 // time1:时间1 // time2:时间2 // 返回值: // bool:true:在同一天 false:不在同一天 func CheckIfInSameDate(time1, time2 time.Time) bool { y1, m1, d1 := time1.Date() y2, m2, d2 := time2.Date() return y1 == y2 && m1 == m2 && d1 == d2 } /* 下面的时间判断函数,是为了解决time.Time的比较问题 可以去掉单调时钟的影响 see: https://cloud.tencent.com/developer/article/2129493 */ // After 比较两个时间,t1是否在t2之后,如果是,返回true,否则返回false // 封装这个方法的原因是,可以去掉单调时钟的影响 func After(t1, t2 time.Time) bool { return t1.Local().After(t2.Local()) } // Before 比较两个时间,t1是否在t2之前,如果是,返回true,否则返回false // 封装这个方法的原因是,可以去掉单调时钟的影响 func Before(t1, t2 time.Time) bool { return t1.Local().Before(t2.Local()) } // Equal 比较两个时间,t1是否等于t2,如果是,返回true,否则返回false // 封装这个方法的原因是,可以去掉单调时钟的影响 func Equal(t1, t2 time.Time) bool { return t1.Local().Equal(t2.Local()) }