Cron表达式语法及注意

Spring Framework以及Quartz,使用了Cron表达式。

Cron表达式的格式由7部分构成,各个部分之间用空格隔开,其中第7个部分为可选部分。格式如下:

* * * * * * *

各个部分表示的意义如下:
第一部分:秒(0~59)
第二部分:分(0~59)
第三部分:小时(0~23)
第四部分:月中的日期(1~31)
第五部分:月份(1~12或JAN~DEC)
第六部分:每周的周几(1~7或SUN~SAT)
第七部分:年份(1970~2099)【可选】


每个部分所能使用的所有符号如下:
*:匹配该域的任意值;如*用在分所在的域,表示每分钟都会触发事件;
?:匹配该域的任意值;
-:匹配一个特定的范围值;如时所在的域的值是10-12,表示10、11、12点的时候会触发事件;
,:匹配多个指定的值;如周所在的域的值是2,4,6,表示在周一、周三、周五就会触发事件(1表示周日,2表示周一,3表示周二,以此类推,7表示周六);
/:左边是开始触发时间,右边是间隔的时间;如秒所在的域的值是5/15,表示5秒、20秒(隔15秒)、35秒(隔15秒)、50秒(隔15秒)时都触发一次事件;
L:最后(last),表示该域的最后一个值;如果是用在天这个域,表示月的最后一天;如果是用在周所在的域,如6L,表示某个月最后一个周五。
W:工作日(weekday);如天所在的域的值是15W,表示本月15日最近的工作日;如果15日是周六,触发器将触发上14日周五;如果15日是周日,触发器将触发16日周一;如果15日不是周六或周日,而是周一至周五的某一个,那么它就在15日当天触发事件;

#:用来指定每个月的第几个星期几;如6#3表示某个月的第三个星期五;


【* 与 ? 的区别】
* 可以用在所有的部分中;
? 只能用在第四部分(月中的日期)与第六部分(每周的周几)这两个部分中。
因为 第四部分(月中的日期)与第六部分(每周的周几)这两个域的值是互斥的,因此需要通过设置一个问号(?)来表明不想设置的那个字段。
例如:设定每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法:
1 1 1 20 * ?
其中最后一位只能用?,而不能使用*, 如果使用*表示不管星期几都会触发,实际上并不是这样!!!


实用的Cron表达式例子:
Cron表达式
表示的含义
0 0 12 * * ? 每天12:00触发事件
0 15 10 ? * * 每天10:15触发事件
0 15 10 * * ? 每天10:15触发事件
0 15 10 * * ? * 每天10:15触发事件
0 15 10 * * ? 2005 2005年的每天10:15触发事件
0 * 14 * * ? 每天14点开始触发,每分钟触发一次,14:59分结束
0 0/5 14 * * ? 每天14点开始触发到14:59分结束的每5分钟触发一次事件
0 0/5 14,18 * * ? 每天14点开始到14:59期间和18点到18:59期间的每5分钟触发一次事件
0 0-5 14 * * ? 每天14点到14:05期间的每1分钟触发一次事件
0 10,44 14 ? 3 WED 每年3月的星期三的14:10和14:44触发一次事件
0 15 10 ? * MON-FRI 周一至周五的10:15触发一次事件
0 15 10 15 * ? 每月15日10:15触发一次事件
0 15 10 L * ? 每月最后一日的10:15触发一次事件
0 15 10 ? * 6L 每月的最后一个星期五10:15触发一次事件
0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五10:15触发一次事件
0 15 10 ? * 6#3 每月的第三个星期五10:15触发一次事件

转载:http://www.thinksaas.cn/group/topic/99159/


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值