Cron表达式计算,在线计算cron(crontab)表达式的执行计划时间,cron表达式支持Linux风格,Cron4j风格,Quartz风格和Spring风格。
Cron表达式是一个字符串,字符串以4个、5个或6个空格隔开,分为5个、6个或7个域,每一个域代表一个含义,表示一组特定的时间序列,通常作为执行程序或者触发动作的时间表。
Linux:minute hour dayOfMonth month dayOfWeek [user] [command]
参考文档
Cron4j:minute hour dayOfMonth month dayOfWeek
参考文档
Quartz:second minute hour dayOfMonth month dayOfWeek [year]
参考文档
Spring:second minute hour dayOfMonth month dayOfWeek
参考文档
Cron表达式字段说明
字段 | 必填 | 允许值 | 允许特殊字符 | 说明 |
---|---|---|---|---|
second | 是 | 0-59 | , - * / | 只有Quartz和Spring支持该字段 |
minute | 是 | 0-59 | , - * / | |
hour | 是 | 0-23 | , - * / | |
dayOfMonth | 是 | 1-31 | , - * / ? L W | ? L W 只有部分实现支持 |
month | 是 | 1–12 or JAN–DEC | , - * / | |
dayOfWeek | 是 | 0-7 or SUN-SAT | , - * / ? L # | ? L # 只有部分实现支持。Linux,Spring支持0-7。Cron4j支持0-6。Quartz支持1-7。 |
year | 否 | 1970–2099 | , - * / | 只有Quartz支持该字段。 |
Cron表达式特殊字符说明
- *:("所有值") - 选中一个字段的所有值。 比如 分钟字段为 * ,则表示每一分钟。
- ?:("没有具体值") - 只能用在dayOfMonth和dayOfWeek两个字段中。它也匹配字段的任意值,但实际不会。因为dayOfMonth和dayOfWeek会相互影响。 例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 0 0 0 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样。
- -:("范围值") - 选中一个字段的范围值。 比如 分钟字段为 20-22 ,则表示分钟的数值为20分钟,21分钟,22分钟。
- ,:("多个值") - 指定一个字段的多个值。 比如 分钟字段为 0,1,5 ,则表示分钟的数值为0分钟,1分钟,5分钟。
- /:("指定增量") - 指定一个字段的增加值。 比如 分钟字段为 5/20 ,则表示分钟的数值为5分钟,25分钟,45分钟。
- L:("最后") - 只能出现在dayOfWeek和dayOfMonth字段中。比如在dayOfMonth字段使用L,则表示月份的最后一天。
- W:("工作日") - 表示有效工作日(周一到周五),只能出现在dayOfMonth字段中,系统将在离指定日期的最近的有效工作日触发事件。
- #:("第几个") - 用于确定每个月第几个星期几,只能出现在dayOfWeek字段中。例如在4#2,表示某月的第二个星期三。