每日定时任务

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()
        }
    })
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容