依赖包

import "github.com/robfig/cron/v3"

基本使用

package main

import (
    "fmt"
    "github.com/robfig/cron/v3"
    "time"
)

func main() {
    c := cron.New(cron.WithSeconds())
    // 含义查看下文表达式示例
    c.AddFunc("0/7 * * * * *", func() {
        fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
    })
    c.Start()
    time.Sleep(300 * time.Second)
}

Cron 表达式

表达式字段

cron.New(cron.WithSeconds())
* / , -* / , -* / , -* / , - ?* / , -* / , - ?

特殊符号

*

星号表示匹配该字段的所有值,如在上面表达式的天位置中使用星号,就表示每天。

/

斜杠用于描述范围的增量,比如'3-59/15'这个表达式在表示从现在的第三分钟开始和往后的每15分钟,到第59分钟为止。表现形式为"* \ / ...",等同于"N-MAX / m",即在该字段范围内的增量。即从N开始,使用增量 m 直到 MAX 结束,它没有重复

,

逗号用于分隔列表中的项,比如,在上表的'星期几'中使用 "MON,WED,FRI" 表示星期一、星期三和星期五

-

连字符用于定义范围。例如,9-17表示包括上午9点至下午5点在内的每小时

?
*

预定义表达式

@yearly (or @annually)0 0 0 1 1 *@monthly0 0 0 1 * *@weekly0 0 0 * * 0@daily (or @midnight)0 0 0 * * *@hourly0 0 * * * *@every time@every 5s0/5 * * * * *

表达式示例

0/7 * * * * *1/7 * * * * **/7 * * * * *0/7 * * * * *0-15/5 * * * * *[0 15]3-15/7 * * * * *[3 15]3 * * * * *@every 5s0/5 * * * * *@every 1h30m

参考链接