摘自: https://blog.csdn.net/skh2015...
cron
表達式共有六個域,*.*.*.*.*.*
分別表示Seconds
,Minutes
,Hours
,DayofMonth
,Month
,DayofWeek
字段名 | 是否必須 | 容許的值 | 容許的特定字符 |
---|---|---|---|
秒(Seconds) | 是 | 0-59 | * / , – |
分(Minutes) | 是 | 0-59 | * / , – |
時(Hours) | 是 | 0-23 | * / , – |
日((Day of month) | 是 | 1-31 | * / , – ? |
月((Month) | 是 | 1-12 or JAN-DEC | * / , – |
星期(Day of week) | 否 | 0-6 or SUM-SAT | * / , – ? |
1)月(Month)和星期(Day of week)字段的值不區分大小寫,如:SUN、Sun和 sun是同樣的。
2)星期(Day of week)字段若是沒提供,至關因而 *java
1)星號(*)
表示cron表達式能匹配該字段的全部值。如在第5個字段使用星號(month),表示每一個月git
2)斜線(/)
表示增加間隔,如第1個字段(minutes)值是3-59/15
,表示每小時的第3分鐘開始執行一次,以後每隔 15 分鐘執行一次(即 三、1八、3三、48這些時間點執行),這裏也能夠表示爲:3/15github
例如:spec := "/5 " //每隔5s執行一次golang
3)逗號(,)
用於枚舉值,如第6個字段值是 MON,WED,FRI,表示星期1、3、五執行
例如: spec := " 52,54 9 " //天天9:52分和9:54分的每秒都執行一次.net
4)連字號(-)
表示一個範圍,如第3個字段的值爲 9-17 表示 9am到 5pm直接每一個小時(包括9和17)
例如:spec := "15-30 *" //每分鐘的15-30s執行定時任務code
5)問號(?)
只用於日(Day of month)和星期(Day of week),表示不指定值,能夠用於代替 *blog
package main import ( "github.com/robfig/cron" "log" ) func main() { i:= 0 c:= cron.New() spec := "*/5 * * * * ?" c.AddFunc(spec, func() { i++ log.Println("cron running:", i) }) c.Start() select{}