[GO]实现定时器指定时间执行

正常使用形式如下 , 例如下面的代码,按照5秒频率进行执行

func cleanVisitorExpire() {
    go func() {
        log.Println("cleanVisitorExpire start...")
        for {
            //执行代码
            t := time.NewTimer(time.Second * 5)
            <-t.C
        }
    }()
}

现在想要每天晚上12点执行 , 例如下面代码 , 动态计算间隔的时间 , 每天晚上12点执行

func cleanLimitQueue() {
    go func() {
        for {
            log.Println("cleanLimitQueue start...")
            //执行功能
            now := time.Now()
            // 计算下一个零点
            next := now.Add(time.Hour * 24)
            next = time.Date(next.Year(), next.Month(), next.Day(), 0, 0, 0, 0, next.Location())
            t := time.NewTimer(next.Sub(now))
            <-t.C
        }
    }()
}

开源作品

GO-FLY,一套可私有化部署的免费开源客服系统,安装过程不超过五分钟(超过你打我 !),基于Golang开发,二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的网页在线客服系统,致力于帮助广大开发者/中小站长快速整合私有客服功能
github地址:go-fly
官网地址:https://gofly.sopans.com

赞赏作者

微信交流

原文地址:https://www.cnblogs.com/taoshihan/p/14573504.html