cron表达式

来源:互联网 发布:js中disabled属性 编辑:程序博客网 时间:2024/05/09 15:19

一个cron表达式是由6到7个域组成,并且以空格隔开的字段串。cron原来是UNIX的工具之一,主要用于进行任务调度,cron的核心应用就是使用cron表达式来处理任务调度。以下为一个简单的cron表达式:10 * * * * ?,表示每分钟的第10秒将会触发。

一个完整的cron表达式总共有7个域(以空格隔开),从左到右分别表示秒、分、小时、月份中的日期、月份、星期中的日期和年份,其中年份域为可选项。例如有一下这个cron表达式:1 2 3 4 5 ? 2013,该表达式共有7个域,以空格隔开,该表达式表示2013年5月4日3时2分1秒,在该表达式中,第6个域(星期中的日期)使用了问号,表示并不需要关心该域,由于该表达式指定了第4个域(月份中的日期),因此此处使用问号,可以理解为不关心5月4日是星期几。以下为cron表达式中符号及其作用的描述。


*:允许该域使用全部的值。假设秒域值为10且分钟域为*,那么意味着每一分钟的第10秒将会符合表达式条件。

?:只允许出现在第4个域(月份中的日期)和第6个域(星期中的日期),表示不关心该域的取值,由于两个域取值可能存在冲突,因此不关心取值的域使用该符号。

- :该符号表示范围,假设将第3个域(小时)设置为10-12,则表示10点到12点。

, :该符号表示一个域内并列的多个值,例如第4个域(月份中的日期)值为2,4,8,表示2号、4号、和8号会触发。

/ :使用该符号设置步长,假设将第1个域(秒)设置为5/15,表示从第5秒开始,步长为15,即第5、20、35、50秒均会触发。

L:应为Last的缩写,如果出现在第4个域(月份中的日期),则为每个月的最后一天;如果出现在第6个域(星期中的日期),则表示该星期的最后一天(周六);如果该符号出现在某个值后,如第6个域值为6L,则表示该月的最后一个星期5.(最后一个星期中的第六天,那就是最后一个星期5)

W:应为weekday的缩写,表示周一到周五(工作日),该符号只能出现在第4个域(月份中的日期)并且只能与其他值组合使用,如15W,则表示该月中与15号最接近的工作日。另外,L和W可以在第4个域(月份中的日期)中混合使用,表示该月的最后一个工作日。

#:该富豪只能出现在第4个域(星期中的日期),表示该月的第几天。如果设置为#5,表示该月的第5天;如果设置为4#3,则前面的4表示星期中的日期,即4#3表示该月的第3个星期三(7是周六)。


各个符号语序出现的域以及每个域的取值范围如下:

秒:必选项,取值范围为0-59,允许出现的符号有“,- * /”

分钟:必选项,取值范围为0-59,允许出现的符号有“, - * /”

小时:必选项,取值范围为0-23,允许出现的符号有“, - * /”

月份中的日期:必选项,取值范围为1-31,允许出现的符号有“, - * ? / L W”

月份:必选项,取值范围为1-12或者月份的英文缩写,允许出现的符号有“, - * /”

星期中的日期:必选项,取值范围为1-7或者英文缩写,允许出现的符号有“,- * / L #”

年份:非必选项,取值范围为1970-2099,允许为控制,允许出现的符号有“, - * /”

0 0