Cron表达式在线生成器 - 免费定时任务表达式构造与解析工具

免费在线Cron表达式生成器,支持秒/分/时/日/月/周/年七字段灵活配置,可视化构造Cron表达式并支持反向解析,帮助开发者快速构建Linux Crontab和Spring/Quartz定时任务。

开发者工具 2026-06-13 10 分钟

在后端开发和运维工作中,Cron表达式是配置定时任务的核心语法。无论是Linux Crontab定时备份数据库、Spring Boot定时发送邮件,还是Jenkins定时执行CI/CD流水线,都离不开Cron表达式。然而Cron语法的特殊字符和多字段组合经常让人困惑——一个字段写错,整个定时任务就会在错误的时间触发jsjson.com 提供了免费的 Cron表达式在线生成器,通过可视化配置自动生成标准Cron表达式,还支持反向解析,让定时任务配置不再出错。

👉 立即使用:Cron表达式生成器 - jsjson.com

📋 Cron表达式是什么

Cron表达式(Cron Expression)是一种用于定义定时任务执行时间的字符串格式,源自Unix系统的Cron守护进程。一个标准的Cron表达式由6-7个字段组成,用空格分隔,从左到右依次代表:

序号 字段 值范围 说明
1 0-59 Quartz框架扩展字段
2 分钟 0-59 核心字段
3 小时 0-23 核心字段
4 日期 1-31 核心字段
5 月份 1-12 核心字段
6 星期 1-7 1=周日,7=周六
7 年份 1970-2099 可选字段

Cron表达式广泛应用于Linux Crontab、Spring Task、Quartz Scheduler、Jenkins、Kubernetes CronJob等几乎所有主流定时任务框架中。

Cron特殊字符速查

掌握以下特殊字符是正确编写Cron表达式的关键:

  • * — 通配符,匹配该字段的所有值
  • ? — 不指定值,仅用于日期和星期字段
  • - — 范围,如 1-5 表示1到5
  • , — 枚举,如 MON,WED,FRI 表示周一、三、五
  • / — 步长,如 0/15 表示从0开始每隔15
  • L — 最后,用于日期字段表示月末,用于星期字段表示最后一个星期几
  • W — 最近工作日,如 15W 表示离15号最近的工作日
  • # — 第N个星期几,如 6#3 表示第三个周五

🔧 如何使用 jsjson.com 的 Cron 生成器

打开 Cron表达式生成器,你可以通过可视化方式逐字段配置,无需手写语法。

第一步:选择字段并配置规则

工具将Cron表达式拆分为7个独立的Tab标签:秒、分、时、日、月、周、年。点击对应的标签进入配置。每个字段提供多种配置模式:

  • 每X执行:如"每秒执行"对应 *,适用于高频轮询场景
  • 周期范围:如"从10到30"对应 10-30,适用于限定时间段
  • 从…开始每…执行:如"从第0秒开始每15秒执行"对应 0/15,适用于等间隔触发
  • 指定值:通过勾选框选择具体的值,适用于固定时间点触发
  • 工作日:日期字段特有,如"每月15号最近的工作日"对应 15W
  • 本月最后一天:日期字段特有,对应 L
  • 第N周星期X:星期字段特有,如"第3周的星期五"对应 6#3

第二步:实时预览表达式

在配置过程中,页面底部会实时显示生成的Cron表达式,7个字段一目了然。表达式上方还会标注每个字段的含义(秒、分、时、日、月、周、年),方便对照检查。

第三步:反向解析验证

如果你已经有一个Cron表达式需要验证含义,可以点击 “反向解析” 按钮,输入现有的Cron表达式,工具会将其翻译为人类可读的中文描述。这个功能在审查他人的定时任务配置时特别有用。

💡 Cron表达式实用技巧

技巧一:常用定时任务表达式速查

以下是后端开发中最常见的Cron表达式,使用 Cron生成器 可以一键生成:

0 0/5 * * * ?        # 每5分钟执行一次
0 0 * * * ?           # 每小时整点执行
0 0 0 * * ?           # 每天凌晨0点执行
0 0 2 * * ?           # 每天凌晨2点执行(适合做数据库备份)
0 0 0 ? * MON         # 每周一凌晨执行
0 0 0 1 * ?           # 每月1号凌晨执行
0 0 0 L * ?           # 每月最后一天执行
0 0 9 ? * MON-FRI     # 工作日上午9点执行
0 0 8 1 1 ?           # 每年1月1日早8点执行
0 0/30 9-18 * * ?     # 工作时间(9-18点)每30分钟执行

技巧二:区分标准Cron和Quartz Cron

不同的框架对Cron表达式的支持略有差异,使用 Cron表达式生成器 时需要注意:

  • Linux Crontab:5个字段(分 时 日 月 周),没有秒和年字段
  • Spring Task / Quartz:6-7个字段,包含秒字段,支持 ?L 等高级字符
  • Kubernetes CronJob:5个字段,与Linux Crontab一致
  • Jenkins:5个字段,但支持 H 符号(散列值,避免同一时间触发大量任务)

在实际使用中,如果你的项目用的是Spring Boot,建议选择6字段格式;如果是K8s CronJob或Linux Crontab,去掉秒字段即可。

技巧三:日期和星期字段的互斥规则

Cron表达式中有一个容易犯的错误:日期(第4字段)和星期(第6字段)不能同时指定具体值。当两者之一指定了具体值时,另一个应使用 ? 占位。

# ✅ 正确:每天执行
0 0 12 * * ?

# ✅ 正确:每周一执行
0 0 12 ? * MON

# ❌ 错误:日期和星期都指定了值
0 0 12 15 * MON

jsjson.comCron生成器 在配置日和周字段时,默认会使用 ? 来避免这种冲突,帮你规避常见错误。

技巧四:利用步长表达式简化复杂调度

步长 / 是Cron中非常实用的运算符,它可以将复杂的时间间隔用简洁的表达式表示:

*/5 * * * * ?         # 每5秒/分执行(看所在字段)
0 */10 * * * ?        # 每10分钟执行
0 0 */2 * * ?         # 每2小时执行
0 0 0 */3 * ?         # 每3天执行

步长的计算方式是 起始值/间隔,如 30/5 表示从30开始每隔5,即30、35、40…。在Cron生成器中选择"从…开始每…执行"模式即可自动生成步长表达式。

技巧五:Cron表达式调试与验证

写完Cron表达式后,建议用以下方式验证其正确性:

  1. 使用 jsjson.com Cron生成器 的反向解析功能查看含义
  2. 在Linux终端使用 date 命令配合预期触发时间做对比
  3. 对于Spring项目,使用 CronExpression.isValidExpression() 方法在代码中校验
  4. 对于关键的生产任务,建议先在测试环境运行一段时间观察触发规律

❓ 常见问题 FAQ

Q1:Cron表达式中 ?* 有什么区别?

* 表示"匹配所有值",而 ? 表示"不指定值"。? 只能用于日期和星期字段,主要用来解决这两个字段的冲突问题。例如 0 0 12 * * ? 表示每天12点(星期不指定),而 0 0 12 ? * MON 表示每周一12点(日期不指定)。

Q2:Linux Crontab和Spring Cron表达式有什么不同?

Linux Crontab使用5个字段(分 时 日 月 周),而Spring/Quartz使用6-7个字段,增加了秒和可选的年份。如果你在Spring Boot中使用 @Scheduled 注解,需要写6字段格式;如果配置Linux Crontab或K8s CronJob,则使用5字段格式。在线Cron生成器支持两种格式,去掉第一个秒字段即为Linux格式。

Q3:如何设置"每隔一天"或"每隔一小时"的定时任务?

使用步长运算符 / 即可。每隔一小时:0 0 */1 * * ?(即 0 0 * * * ?)。每隔一天:0 0 0 */1 * ?。注意"每隔一天"和"每天"在Cron中表达相同,如果需要严格的隔天执行,需要额外的逻辑判断。

Q4:Cron表达式中的星期几是怎么编号的?

不同框架的编号不同。标准Cron中,1 代表周日(SUN),7 代表周六(SAT)。但部分实现(如ISO 8601)中 1 代表周一。使用 jsjson.com Cron生成器 时,鼠标悬停在星期选项上会显示对应的星期名称,避免混淆。

Q5:如何实现"每月最后一个工作日"的定时任务?

标准Cron没有直接支持"最后工作日"的语法,通常的变通方案是使用 LW 组合,或者在代码层面做判断。在Cron生成器中,日期字段选择"工作日"模式可以配置 LW(月末最近工作日),但更精确的控制建议结合程序逻辑实现。

🔗 相关工具推荐

  • 时间戳在线转换 — Unix时间戳与日期格式互转,配合Cron调试定时任务
  • 时区在线转换 — 跨时区部署定时任务时,确认不同服务器的触发时间
  • 日期计算器 — 计算两个日期之间的天数差,辅助规划周期性任务

📚 相关文章