TapCub 正式上线:统计、分析、客服一个平台免费用

免费工具 Cron 表达式生成器:在线解析与执行时间

Cron 表达式只有一行,却最容易写错。输入一个表达式,或者从常用写法开始改,工具会用中文说明它的意思、逐段拆开,并按服务器实际所在的时区列出接下来几次执行时间——上线之前先看一眼。

  • 5 段 / 6 段都支持
  • 按任意时区算执行时间
  • 本地计算
生成器

生成或检查一个 Cron 表达式

点一个常用按钮,或者直接输入表达式。中文说明、逐段拆解和下次执行时间都会边输边更新。

5 段:分 时 日 月 周(Linux crontab)。6 段:最前面多一个秒(Spring、Quartz)。也支持 @daily 这类简写。

下次执行时间按这个时区计算(含夏令时)。选服务器或调度平台实际使用的时区。

中文说明

每周一至周五 09:30

下次执行时间
2026-11-13 09:30:00  周五
2026-11-16 09:30:00  周一
2026-11-17 09:30:00  周二
2026-11-18 09:30:00  周三
2026-11-19 09:30:00  周四

按所选时区显示,带星期。夏令时跳过的时刻不会列出。

逐段拆解
分   30          30
时   9           9
日   *           *
月   *           *
周   1-5         1,2,3,4,5

每一段的原始写法,以及它展开后的具体取值。

全部在你的浏览器里计算。这里输入的任何内容都不会上传,TapCub 也不会保存。

分享这组输入:数值写在链接的 # 后面,不会发到服务器。

版本 v1.0更新于 更新记录

读懂结果

每个结果各看什么

先读中文说明,再对照执行时间。两者有一个和你想的不一样,就是表达式写错了。

中文说明

由各段拼出来的一句话,比如「每周一至周五 09:30」。时间和日期都按调度程序实际匹配的方式写。

下次执行时间

从现在往后的真实日期时间,按所选时区显示。问题多半在这里暴露:以为每天一次结果每分钟一次,或者每月任务在 2 月根本不跑。

逐段拆解

每一段的写法和展开后的取值:*/15 展开成 0、15、30、45,MON-FRI 展开成 1–5。* 表示所有值。

提示

6 段表达式、某段超出范围、用了不支持的语法,都会在结果上方提示,并指出是哪一段。

Cron 按执行它的机器或服务的时区运行。云服务器和 Docker 容器默认 UTC 的情况很常见,写之前先确认。

怎么用

从想法到一行 crontab

四步,最后一步最常被跳过。

  1. 1

    从常用写法开始

    点最接近的按钮,比如「工作日 9:30」,或者粘贴你要检查的表达式。

  2. 2

    改各段

    改分钟、小时或日期,中文说明会跟着变,每一处改动的效果都看得见。

  3. 3

    选时区

    选服务器或调度平台的时区。UTC 服务器上的 9 点,是北京时间下午 5 点。

  4. 4

    核对执行时间

    上线前看一遍接下来的执行时间。不对就在这里改好,再复制到 crontab、宝塔计划任务或代码里。

语法

5 段,从左到右:分 时 日 月 周

Linux crontab 是空格隔开的 5 段;Spring 的 @Scheduled(cron = …) 和 Quartz 在最前面多一个「秒」,共 6 段(Quartz 还可以有第 7 段年份)。每一段可以写具体值、列表、区间或步长。

  • * 所有值 · , 列表(1,15)· - 区间(9-17)· / 步长(*/15、0/5、10-50/20)
  • ? 表示「不指定」(Quartz 写法),按 * 处理
  • 简写:@yearly、@monthly、@weekly、@daily、@hourly
  • 「日」和「周」同时限定时,按 crontab 惯例只要满足其一就执行
  • 不支持:L、W、#,以及第 7 段写具体年份
Cron 各段含义与取值范围
段取值范围例子
秒(仅 6 段)0–590 = 整分
分0–59*/5 = 每 5 分钟
时0–239-17 = 9:00 到 17:59
日1–311,15 = 每月 1 号和 15 号
月1–12 或 JAN–DECJAN,JUL = 1 月和 7 月
周0–7(0 和 7 都是周日)或 SUN–SAT1-5 = 周一到周五
算例

常用 Cron 表达式对照

中文说明是工具实际输出的结果。最后两行是两个坑:日和周同时写是「或」,以及 Spring / Quartz 的 6 段写法。

常用 Cron 表达式与工具给出的中文说明
表达式中文说明常见用途
*/5 * * * *每 5 分钟健康检查、轮询队列
0 * * * *每小时的第 0 分钟按小时汇总数据
0 2 * * *每天 02:00凌晨备份数据库、清理日志
30 9 * * 1-5每周一至周五 09:30工作日早上发日报
*/15 9-17 * * 1-5每周一至周五 09:00–17:59 之间每 15 分钟上班时间同步订单
0 0 1 * 1每月 1 号或每周一 00:00多半写错了:每周一也会跑
0 0/5 9-17 * * ?每天 09:00–17:59 之间每 5 分钟Spring @Scheduled / Quartz,秒在最前

只想在「既是 1 号又是周一」那天跑,把其中一段写成 *,另一个条件在任务脚本里判断。

常见错误

Cron 表达式最容易写错的地方

语法很小,错误几乎都出在调度程序「默认」了什么。

时区不对

很多云服务器、Docker 容器默认 UTC,按北京时间写的 9 点会在下午 5 点执行。先确认服务器时区;宝塔面板等计划任务也按服务器系统时间执行。

分钟段写了 *

* 9 * * * 是 9:00 到 9:59 每分钟一次,共 60 次。只想 9 点整跑一次,写 0 9 * * *。

日和周同时限定

0 0 13 * 5 是每月 13 号和每个周五都跑,不是「13 号恰逢周五」。只限定其中一段,另一段写 *。

crontab 和 Quartz 混用

6 段的 Quartz 表达式贴进 crontab 会报错,反过来每段都错位一格。Quartz 的星期从 1 = 周日开始,用 MON 这样的缩写最不容易错。

常见问题

Cron 表达式常见问题

还有其他问题?

直接和 TapCub 团队聊聊——工作日通常几小时内回复。

Cron 表达式是什么?

一行用空格隔开的定时规则:分、时、日、月、周。Linux 的 cron 服务从 crontab 文件里读它;Kubernetes CronJob、GitHub Actions、Spring、Quartz 等调度工具也用同样的写法。

Cron 表达式 5 段和 6 段有什么区别?

Linux crontab 是 5 段,最小单位是分钟。Spring 和 Quartz 在最前面加了「秒」,所以 0 30 9 * * * 是 9:30:00。Quartz 还允许第 7 段写年份,星期从 1 = 周日数起;crontab 和 Spring 用 0 或 7 表示周日。

*/5 是什么意思?

步长:从这一段的最小值开始,每隔 5 个取一次。在分钟段里 */5 就是 0、5、10 … 55 分;10-50/20 是 10、30、50 分。

Cron 用的是哪个时区?

执行它的机器或服务的时区。云服务器、Docker 容器默认 UTC 很常见,比北京时间慢 8 小时。部分 cron 实现支持 CRON_TZ 变量,Kubernetes CronJob 有 timeZone 字段,GitHub Actions 的定时默认按 UTC;云函数的定时触发器也常按 UTC,以平台文档为准。

怎么每 30 秒执行一次?

标准 crontab 最小只到分钟。Spring / Quartz 可以用秒段:*/30 * * * * *。只能用 crontab 时,常见做法是写两行,其中一行命令前加 sleep 30。

日和周同时写了会怎样?

按 crontab 惯例,只要满足其中一个就执行:0 0 1 * 1 会在每月 1 号和每个周一都跑。Quartz 要求其中一段写 ?,就是为了避免这种歧义。

支持 L、W、# 吗?

不支持。Quartz 的这几个扩展(月末最后一天、最近的工作日、第几个星期几)会提示不支持;第 7 段写具体年份、以及 @reboot(它不是时间)也不支持。

更新记录

更新记录

这个工具的新功能、修复和数据更新,最新的在前。

  1. · v1.0

    首次上线首次上线。

缺功能或发现错误?告诉我们,常被提到的会排进下次更新。 全部工具更新

看清数据,找到增长。

每一次点击,都有数据依据。装好一行代码,1 分钟看到第一批数据。

无需信用卡 · 统计与客服都有免费版 · 统计无 Cookie