[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
        }
    }()
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM