Quartz是一个开源的Java作业调度框架,它使用CRON表达式来定义任务的执行计划。CRON表达式是一种时间描述格式,由7个(或6个)字段组成,字段之间用空格分隔。以下是对Quartz CRON表达式的详细解析:
- 秒(second):范围从0到59。表示一分钟内的秒数。
- 分(minute):范围从0到59。表示一小时内的分钟数。
- 小时(hour):范围从0到23。表示一天内的小时数(24小时制)。
- 日期(day of month):范围从1到31。表示一个月内的日期。
- 月份(month):范围从1(1月)到12(12月)。表示一年内的月份。
- 星期(day of week):范围从1(周日)到7(周六)。表示一周内的星期几。在某些系统中,0和7都表示周日。
- (可选)年(year):范围从1970到2099。表示年份。
CRON表达式支持的特殊字符:
*
:表示任意值,用于表示该字段可以匹配任何值。?
:表示不指定值,用于日期和星期字段,表示不关心该字段的具体值。-
:表示范围,例如1-5表示1到5之间的数值。,
:表示枚举值,例如1,3,5表示1、3和5。/
:表示步长,例如*/2表示每隔2个单位执行一次。L
:表示最后,仅适用于日期和星期字段。例如,5L表示一个月的最后一个星期五。W
:表示工作日,仅适用于日期字段。例如,15W表示离15号最近的工作日。#
:表示第几个,仅适用于星期字段。例如,5#3表示一个月的第三个星期五。
CRON表达式示例:
0 0 12 * * ?
:每天中午12点执行。0 15 10 ? * *
:每天上午10点15分执行。0 0/5 * * * ?
:每隔5分钟执行一次。0 0 0 * * ?
:每天凌晨0点执行。0 0 0 ? * 6L
:每个月的最后一个星期六执行。0 0 0 ? * 6L 2022
:2022年每个月的最后一个星期六执行。