Cron 表达式生成器

可视化配置定时任务,生成 Linux/Quartz/Spring 等多种格式 Cron 表达式

秒 (0-59)

分 (0-59)

时 (0-23)

日 (1-31)

月 (1-12)

周 (0-6 或 SUN-SAT)

年 (可选,1970-2099)

生成的 Cron 表达式

* * * * * ?
秒 分 时 日 月 周 [年]

下次执行时间(未来 5 次)

  • 计算中...

Linux 格式 (5 位): * * * * *

Quartz/Spring 格式 (6 位): * * * * * ?

带年格式 (7 位): * * * * * ? *

常用示例

每小时执行一次

0 0 * * * ?

每小时的第 0 分第 0 秒执行

每天凌晨 2 点执行

0 0 2 * * ?

每天凌晨 2 点整执行

每周一上午 9 点执行

0 0 9 ? * MON

每周一的上午 9 点整执行

每月 1 号执行

0 0 0 1 * ?

每月 1 号凌晨 0 点执行

每 5 分钟执行

0 */5 * * * ?

每隔 5 分钟执行一次

工作日 9:00-18:00 每小时执行

0 0 9-18 ? * MON-FRI

周一到周五的 9 点到 18 点,每小时执行

常见问题

Cron 表达式是什么?
Cron 表达式是一种用于配置定时任务的时间格式,由 5-7 个字段组成,分别表示秒、分、时、日、月、周、年。广泛应用于 Linux 定时任务、Quartz 调度器、Spring Schedule 等场景。
Cron 表达式的字段顺序是什么?
标准顺序为:秒 (0-59) 分 (0-59) 时 (0-23) 日 (1-31) 月 (1-12) 周 (0-6 或 SUN-SAT) 年 (可选,1970-2099)。Linux 系统通常使用前 5 位(不含秒),Quartz 和 Spring 使用 6 位或 7 位。
特殊字符的含义是什么?
* 表示任意值(每),/ 表示增量(如 */5 表示每 5 单位),- 表示范围(如 1-5 表示 1 到 5),, 表示列举(如 1,3,5 表示 1、3、5),? 仅用于日和周字段表示不指定值,L 表示最后,W 表示最近工作日,# 表示第几个周几。
日和周字段为什么有 ? 符号?
日和周字段互斥,当指定了日字段的具体值时,周字段必须用 ? 表示不指定;反之亦然。这是为了避免歧义,因为同时指定日和周可能导致冲突。
如何在 Linux 中使用 Cron?
使用 crontab -e 命令编辑定时任务,每行一个任务,格式为:分 时 日 月 周 命令。例如:0 2 * * * /path/to/script.sh 表示每天凌晨 2 点执行脚本。
如何在 Spring 中使用 Cron?
在 Spring 中使用 @Scheduled(cron = "表达式") 注解,例如:@Scheduled(cron = "0 0 2 * * ?") 表示每天凌晨 2 点执行。需要在配置类上添加 @EnableScheduling 启用定时任务。