文档章节

Cron表达式简介

Leech
 Leech
发布于 2014/09/20 10:27
字数 1033
阅读 53
收藏 1

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相同。



© 著作权归作者所有

Leech
粉丝 20
博文 225
码字总数 484728
作品 0
武汉
架构师
私信 提问
【Spring Boot】23.定时任务

简介 项目开发中经常需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息。Spring为我们提供了异步执行任务调度的方式,提供TaskExecutor 、TaskScheduler 接口。 两个...

落花时节又逢卿
2018/12/28
0
0
Quartz.net2.2初体验

简介:Quartz.net是一个开源的作用调度框架,非常强大,能够通过简单的配置帮助我们定时具体的操作。相对于我们用的线程里面while(true)然后sleep来执行某个操作,应该算的上是高端,大气,...

mszhangxuefei
2013/11/01
0
0
Quartz入门例子简介 从入门到菜鸟(三)

前面两个博客讲的都是简单触发器,直接传入一个时间让任务执行,这一话讲CronTrigger的例子。 CronTrigger也是Quartz最重要的特色之一,通过Quartz特有的Cron表达式来确定某类时间,能完成类...

Zero零_度
2016/07/27
28
0
xxssyyyyssxx/cron-hms

cron-hms 项目介绍 一、根据cron表达式,计算某天的那些时刻执行。以为监控做准备。 二、根据cron表达式,给定Date,计算下一个执行时间点。 因为是基于天分割,时、分、秒、和天、月、星期的...

xxssyyyyssxx
04/04
0
0
toktok/easy-cron

easy-cron 介绍 Cron表达式看则简单,但是实际上如果手写的话,非常容易出错的,而且很难及时发现,而easy-cron就是为此应运而生的。 easy-cron是基于Vue.js和iview实现crontab表达式的UI组件...

toktok
04/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

10分钟详解Spring全家桶7大知识点

点关注,不迷路;持续更新Java架构相关技术及资讯热文!!! Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。它包括SpringMVC、SpringBoot、Spring Cloud、Spr...

我最喜欢三大框架
16分钟前
4
0
注册服务

列出所有服务[root@localhost ~]# systemctl list-unit-files[root@localhost ~]# systemctl status mysqld[root@localhost ~]# systemctl stop mysqld[root@localhost ~]# ......

jxlgzwh
20分钟前
0
0
解决jdk8 stream tomap方法报错:java.lang.IllegalStateException: Duplicate key异常解决(key重复)

List<User> userList = User.ME.loadList(users); if (CollectionUtils.isNotEmpty(userList)) { Map<Long, User> userMap = userList.stream().filter(Objects::nonN......

冰峰雪座
29分钟前
0
0
jdk中的一些命令

jdk中的一些命令 jps jstack jmap jstat jhat jinfo javap http://www.importnew.com/18398.html

晨猫
29分钟前
0
0
Bystack的高TPS共识算法

共识算法是分布式系统保证节点数据状态一致性的方法,在区块链的共识算法分POW(工作量证明)和POS(权益证明)两大类。第一类POW模式是在公链项目中运用的最广泛应用的共识算法,比特币长达10年...

比原链Bytom
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部