ToolKitToolKit工具箱

⏲ Cron 表达式解析

解析 cron 语义 + 预测下次执行时间

分时日月周
📖 周一、周二、周三、周四、周五 9:00 执行

🔒 全部处理在你的浏览器本地完成,数据不会上传到任何服务器。

工具说明

Cron 表达式是 Linux/Unix 定时任务(crontab)以及大多数调度框架(Spring、Quartz、Kubernetes CronJob、各类 CI)用来描述"什么时候执行"的紧凑语法。它由几个用空格分隔的字段组成,每个字段对应一个时间维度,但反过来读一串 `0 2 * * 1-5` 往往让人犯难。这个工具把表达式翻译成人话,并按你给的当前时间往后推算未来几次实际触发时刻,让你在部署前确认它真的按预期跑。

标准的 crontab 是 5 个字段:分钟、小时、日、月、星期;Quartz/Spring 等框架则常用 6 段(在最前面多一个"秒")。每个字段都支持 `*`(任意)、`,`(列举,如 `1,15`)、`-`(区间,如 `9-17`)、`/`(步长,如 `*/5` 每 5 个单位)。需要留意的是"日"和"星期"两个字段同时被限定时是"或"的关系,而非"与"。整个解析在你的浏览器里完成,表达式不会上传到任何服务器。

使用步骤

  1. 在输入框粘贴或键入你的 cron 表达式,例如 `0 9 * * 1` 表示每周一上午 9 点。
  2. 确认字段数量:5 段是标准 crontab,6 段表示带"秒"的 Quartz/Spring 风格,工具会按对应规则解析。
  3. 阅读自动生成的自然语言说明,核对它和你的预期是否一致。
  4. 查看"下次执行时间"列表,确认后续几次触发的具体日期时间符合排期。
  5. 需要微调时直接修改某个字段(如把 `*/5` 改成 `*/15`),说明与时间预测会实时更新。

适用场景

  • 部署定时任务前,先核对 `0 2 * * *` 这类表达式到底是几点跑,避免半夜批处理跑错时间。
  • 接手别人写的 crontab 或 Quartz 配置,快速读懂一串看不懂的表达式。
  • 编写数据库备份、日志清理、报表推送等周期任务时验证频率是否合理。
  • 排查"任务没在该跑的时候跑"的问题——看实际预测时间和你以为的差在哪。
  • 学习 cron 语法:改一个字段就能直观看到触发时间如何变化。

常见问题

cron 表达式是 5 段还是 6 段?

取决于运行环境。传统 Linux crontab 是 5 段(分 时 日 月 周)。Quartz、Spring 的 `@Scheduled(cron=...)` 等通常是 6 段,在最前面多一个"秒"字段;Quartz 还允许第 7 个可选的"年"。粘贴前先确认你的调度器用哪种格式。

`*/5` 和 `0/5` 有什么区别?

在分钟字段里两者通常等价,都表示"从 0 开始每 5 分钟"。`*/5` 是"在整个取值范围上每隔 5",`0/5` 是"从 0 开始每隔 5"。区别出现在起点非 0 时,例如 `3/10` 表示从第 3 个单位起每 10 个触发一次。

为什么"日"和"周"同时设置时结果比我想的多?

因为这两个字段是"或"的关系。`0 0 1 * 1` 表示"每月 1 号 或 每周一"都会触发,而不是"只有恰好是周一的 1 号"。如果只想要其中一个条件,就把另一个字段设为 `*`。

预测的执行时间是哪个时区?

本工具按你浏览器的本地时区计算并展示。实际生产中 cron 通常按服务器或容器的系统时区(常为 UTC)执行,两者可能不同。部署时务必确认服务器时区,以免出现几小时偏差。