Quartz cron(6~7 段)

格式:秒 分 时 日 月 周 [年],共 6 个必填域 + 1 个可选「年」域,域之间用空格分隔。

*   *   *   *   *   *   *
-   -   -   -   -   -   -
|   |   |   |   |   |   |
|   |   |   |   |   |   +-- 年(可选,1970-2099)
|   |   |   |   |   +------ 周(1-7 或 SUN-SAT,1=周日)
|   |   |   |   +---------- 月(1-12 或 JAN-DEC)
|   |   |   +-------------- 日(1-31)
|   |   +------------------ 时(0-23)
|   +---------------------- 分(0-59)
+-------------------------- 秒(0-59)
位置 字段 必填 取值范围 可用特殊字符
10-59* - / ,
20-59* - / ,
30-23* - / ,
41-31* - / , ? L W C
51-12 或 JAN-DEC* - / ,
61-7 或 SUN-SAT* - / , ? L # C
71970-2099* - / ,

Linux crontab(5 段)

格式:分 时 日 月 周,无「秒」域;标准 Linux cron 不支持 ?LW# 等 Quartz 扩展符号。

*   *   *   *   *
|   |   |   |   |
|   |   |   |   +------ 周(0-7,0 与 7 均为周日)
|   |   |   +---------- 月(1-12)
|   |   +-------------- 日(1-31)
|   +------------------ 时(0-23)
+---------------------- 分(0-59)
位置 字段 取值范围 可用特殊字符
10-59* , - /
20-23* , - /
31-31* , - /
41-12* , - /
50-7(0、7=周日)* , - /

特殊字符(Quartz)

字符 含义 示例
*匹配域内任意值0 * * * * ? 每分钟的第 0 秒执行
-区间范围0 6-18 * * * ? 每天 6~18 点每分钟执行
/起始值起按步长递增0 0/15 * * * ? 从 0 分起每 15 分钟
,列举多个值0 0 8,10 * * ? 每天 8 点、10 点
?不指定;仅用于「日」「周」,且二者需有一个为 ?0 0 0 20 * ? 每月 20 号
L最后;日=本月最后一天,周=最后一个指定星期0 0 0 L * ? 每月最后一天 0 点
W离指定日最近的工作日(仅「日」域)0 0 0 15W * ? 离 15 号最近的工作日
LW本月最后一个工作日0 0 10 LW * ?
#第 N 个星期 X(仅「周」域)0 0 0 ? * 4#2 第二个周三

常用表达式示例

说明 Quartz(6 段) Linux crontab(5 段)
每秒* * * * * ?
每分钟0 * * * * ?* * * * *
每小时整点0 0 * * * ?0 * * * *
每天凌晨0 0 0 * * ?0 0 * * *
每天 9 点0 0 9 * * ?0 9 * * *
工作日 9 点0 0 9 ? * MON-FRI0 9 * * 1-5
每 15 分钟0 0/15 * * * ?*/15 * * * *
每月 1 号 0 点0 0 0 1 * ?0 0 1 * *

工具说明

cron 字段速查表汇总 Quartz 与 Linux crontab 的字段顺序、取值范围与特殊字符,便于配置定时任务时快速查阅。完整语法说明与案例请见 cron 教程crontab 教程

日 vs 周

Quartz 中「日」「周」互斥:指定具体日期时「周」用 ?,指定星期时「日」用 ?。Linux crontab 中「日」「周」为 OR 关系,通常只明确其中一个,另一个用 *