tickTask("21:30:45", 24*time.Hour, taskFunc)
在 21:30:45开始执行间隔为24小时的任务
//@param t 格式为 "21:30:45"
//@param interval 间隔
//@param task r任务
func tickTask(t string, interval time.Duration, task func()) {
tmp, _ := time.ParseInLocation(
"2006-01-02 15:04:05",
time.Now().Format("2006-01-02") + " " + t,
time.Local,
)
d := time.Until(tmp)
d = (d + 24 * time.Hour) % (24 * time.Hour)
fmt.Printf("距离下次定时任务还有: %v\n", strings.Split(d.String(), ".")[0] + "s")
time.AfterFunc(d, func() {
task() // d 时间后立刻执行任务
ticker := time.NewTicker(interval)
for {
<-ticker.C
task()
}
})
}