【Go】cron时间格式
-
Minutes
:分钟,取值范围[0-59]
,支持特殊字符* / , -
; -
Hours
:小时,取值范围[0-23]
,支持特殊字符* / , -
; -
Day of month
:每月的第几天,取值范围[1-31]
,支持特殊字符* / , - ?
; -
Month
:月,取值范围[1-12]
或者使用月份名字缩写[JAN-DEC]
,支持特殊字符* / , -
; -
Day of week
:周历,取值范围[0-6]
或名字缩写[JUN-SAT]
,支持特殊字符* / , - ?
。
注意,月份和周历名称都是不区分大小写的,也就是说SUN/Sun/sun
表示同样的含义(都是周日)
特殊字符含义如下:
-
*
:使用*
的域可以匹配任何值,例如将月份域(第 4 个)设置为*
,表示每个月; -
/
:用来指定范围的步长,例如将小时域(第 2 个)设置为3-59/15
表示第 3 分钟触发,以后每隔 15 分钟触发一次,因此第 2 次触发为第 18 分钟,第 3 次为 33 分钟。。。直到分钟大于 59; -
,
:用来列举一些离散的值和多个范围,例如将周历的域(第 5 个)设置为MON,WED,FRI
表示周一、三和五; -
-
:用来表示范围,例如将小时的域(第 1 个)设置为9-17
表示上午 9 点到下午 17 点(包括 9 和 17); -
?
:只能用在月历和周历的域中,用来代替*
,表示每月/周的任意一天。
了解规则之后,我们可以定义任意时间:
-
30 * * * *
:分钟域为 30,其他域都是*
表示任意。每小时的 30 分触发; -
30 3-6,20-23 * * *
:分钟域为 30,小时域的3-6,20-23
表示 3 点到 6 点和 20 点到 23 点。3,4,5,6,20,21,22,23 时的 30 分触发; -
0 0 1 1 *
:1(第 4 个) 月 1(第 3 个) 号的 0(第 2 个) 时 0(第 1 个) 分触发。