Cron表达式简介


1 介绍

    cron已经存在了很长时间UNIX工具,因此它的调度能力是强大的并久经考验。CronTrigger类基于cron的调度能力。

    CronTrigger使用“cron表达式”,能够创建触发调度,例如,“在每个星期一到星期五早上8点”或“在每月最后一个星期五的1点半”。

Cron表达式时强大的,但可能会非常混乱。该教程致力于带有一些神秘感创建一个Cron表达式。

2 格式

    一个Cron表到时是一个由67个字段通过空格分隔的字符串。字段能包含任意允许的值,连同允许特定字符字段的各种组合。字段描述如下表所示:

字段名

必选

允许值

允许特定字符

Y

0-59

, - * /

Y

0-59

, - * /

小时

Y

0-23

, - * /

每月的第几天

Y

1-31

, - * ? / L W

Y

1-12JAN-DEC

, - * /

每星期的第几天

Y

1-7SUN-SAT

, - * ? / L #

N

空,1970-2099

, - * /

    因此Cron表达式最简单的情况是:* * * * ? *

    或更复杂,像0/5 14,18,3-39,52 * ? JAN.MAR,SEP,SEP MON-FRI 2002-2010

3 特殊字符

    1)*(任意值):用于选择一个字段中的所有值。例如,*在分钟字段意味着每分钟。

    2)?(没有指定值):当你指定两个字段的字符是允许的,而不是其他时是有用的。例如,如果我想让我的触发器在月中的某一天触发,但不关心那个星期会发生,我可以放置10day-of-month字段,和?day-of-week字段。

    3)-:用于指定范围。例如“10-12”在hour字段意味着101112小时。

    4),:用于指定额外值。例如“MON,WED,FRI”在day-of-week字段意味着星期一、星期三、星期五。

    5)/:用于指定增量。例如,“0/15”在seconds字段意味着“0153045秒”。“5/15”在seconds秒意味着“5203550秒”。你也能在“字符——在这种情况下”后面指定“/”等价于“/”前面有0。“1/3”在day-of-month字段意味着“从每月的第一天开始没3天出发一次”。

    6)L(“last”):在两个允许的字段中有不同的意义。例如,“L”在day-of-month字段上意味着“每月的最后一天”——131号、闰年228号。如果使用在day-of-week上,它仅意味着“7”或“SAT”。但如果用于day-of-week字段的其他值后面,它意味着“这个月的最后的星期几”——例如“6L”意味着“月的最后一个星期五”。你也能指定指定从月的最后一天的位移,例如“L-3”意味着每月的倒数第三天。当使用L可选项时,重要的是不要指定列表,或值的范围,你会困惑/意想不到的结果。

    7)W(“工作日”):用于指定工作日(星期一至星期五)最近的一天。例如,如果你指定“15W”作为day-of-month字段的值,意味着:“距离本月15号最近的工作日”。因此,如果15号是星期六,触发器将在14号的星期五触发。如果15号是星期天,触发器将在星期一的16号触发。如果15号是星期二,那么它将在15号的星期二触发。然后如果你指定“1W”作为day-of-month,而1号是星期六,触发器将在3号的星期一触发,因为他不会跨越月的天数的边界。W字符只能指定day-of-month的一天,不是一个范围或天的列表。LW字符也可以在day-of-month字段联合使用,LW表示每月的最后一个工作日。

    8)#:表示每月的第几个星期几。例如,“6#3”在day-of-week字段上表示每月的第三个星期五。(day 6=星期五而#3=每月的第几个)。另一个例子:“2#1=每月的第一个星期一。注意,如果你指定“#5”而在day-of-week上的没有第5个,那么不会触发。合法字符和月和每周的第几天的名字不区分大小写。MONmon相同。



你可能感兴趣的:(定时任务,cron,石英)