cron表达式是什么
首先cron是表示计划任务。其次Oracle官网这样解释cron表达式:
Cron expressions are used to configure instances of CronTrigger, a subclass of org.quartz.Trigger. A cron expression is a string consisting of six or seven subexpressions (fields) that describe individual details of the schedule.
也就是说cron表达式通常用于配置计划任务的触发时间。一个cron表达式是一个由六个或者七个子表达式(字段)组成的字符串。而子表达式或者称为字段之间用空格隔开。
举例描述
字段名 | 是否必需 | 允许的值 | 允许的特殊字符 |
秒(seconds) | Y | 0-59 | , - * / |
分(minutes) | Y | 0-59 | , - * / |
时(hours) | Y | 0-23 | , - * / |
天(day of month) | Y | 1-31 | , - * /L W C |
月(month) | Y | 0-11 或者 JAN-DEC | , - * / |
星期(day of week) | Y | 1-7 或者 SUN-SAT | , - * /?L C# |
年(year) | N | 1970-2099或者不写 | , - * / |
这时就可以明白前面所说的六个或者七个子表达式或者字段是什么意思了,从第一位到最后一位分别表示秒 分 时 天 月 星期 年 最后一位年可以不写。
对于以上特殊字符,可以这么理解:
“,”表示and
“-”表示一个区间段,即开始到结束
“*”表示全选,即用汉语中的“每”或者英文中的every/each/per
“/”表示一个区间段的时长,例如放在第一位“/10”则表示每10秒
“L”表示最后,即Last
“W”表示weekday,即工作日也就是周一到周五
“C”表示canlendar,即日历,例如“1C”在星期位上就是包括日历上的星期日
“#”表示序列,如“#2”表示第二
下面在举例中详细说明:
表达式 | 表达的时间 |
0 0 12 * * ? | 每天中午12点 |
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点55分之间每5分钟触发一次 |
0 0/5 14,18 * * ? | 每天下午14点到14点55分 和18点到18点55分之间 每5分钟触发一次 |
0 0-5 14 * * ? | 每天下午14点开始到14点05结束 |
0 10,44 14 ? 3 WED | 每年三月份的每个周三下午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分 |
0 0 12 1/5 * ? | 每个月从第一天开始每隔5天中午12点触发一次 |
0 11 11 11 11 ? | 每年11月11号11点11分 |