定时任务表达式

每次写定时任务都需要搜索CornException表达式,总归有点麻烦,不如看下到底是怎么写的。
首先通过下面这个表格直观的看下表达式的结构:

字段允许值范围特殊符号
0-59*,- /
0-59*,- /
0-23*,- /
1-31*,- / L W C ?
1-12, - * /
1-7*,- / L C # ?
年(可不填)不填默认 1970-2099, - * /

一共七个字段,中间以空格隔开,一般第七个年字段不填,应用场景不多,所以就看前面六个。其中周(1-7),是从周日开始的。

常用符号:
* 这个符号代表每XX,位于哪个字段中就是每(字段名),比如每秒,每分,每时,每月等等;
, 代表多个值,例如 0 0 1,2 * * * 就是指每天的1点和两点执行,可以知道是用于某个字段有多个确定值时;
- 上面刚说是用于多个确定值,那么当我有很多确定值并且在一个范围内时,就可以使用这个符号-,例如:
0 0 1-2 * * * 代表每天的1到2点执行;
/ 有时候我们有循环执行的 需求,那么这个符号就用来设定循环的间隔和起始值。比如 0/2*/30,其中/前的值代表起始值,*默认就是值范围的开始,也就是0或者星期的1。后面的就是步进值,比如上面的2秒,2分,2小时都可以,简言之就是从什么时候开始,间隔多久执行一次。在周字段中是间隔多少天。
特殊符号:
?这个符号只能在日和周字段中使用,意思是代表不确定的值,一般情况下和*没有什么区别(当周和日都没有指定时)。但是当周和日有一个指定时,他的作用就出现了。比如你指定了1号同时又指定周一,这很有可能冲突,1号很有可能不是周一,所以这个时候为了避免冲突,周和日有一个指定的时候,另一个就用
L 此符号只出现在日和周中,在日字段中,代表本月的最后一天,在周字段中,代表本周的最后一天。其中在周中还可以指定最后一个周几,例如:3L,代表最后一个周二。
W意味着在本月内离当天最近的工作日触发,所谓最近工作日,即当天到工作日的前后最短距离,如果当天即为工作日,则距离为0;所谓本月内的说法,就是不能跨月取到最近工作日,即使前/后月份的最后一天/第一天确实满足最近工作日;因此,"LW"则意味着本月的最后一个工作日触发,W只能在日字段中出现。
# 该符号仅在周字段中出现,用来表示第几周,例如:5#3,本月第三周的周四,联想到L,L只不过是#的特殊用法,最后一周的周几。

个人理解为什么周和日比较特殊,每个月份中的日和周是不太固定的,不像每年的月份都基本一致(除闰年外)。12个月的天数也不是都一样的,同样的在不同的月份中,相同的日子对应的周也不一定相同,使得某些确定性的时间无法指定。这时L在日字段中指定最后一天就显得很有用,同理W在不同月中对应的周和日信息也都不一定相同。模糊的情况下有对应的字段就会更加方便精确的指定需要执行的时间。

本文章参考:http://www.cnblogs.com/pipi-changing/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值