编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 时间转换 / Cron表达式解析

Cron表达式解析

看懂 Cron 表达式什么时候执行。

输入
结果

这个工具能做什么

把一条五段式 Cron 表达式填进去,工具会逐段翻译成中文说明,并从当前时间往后推算出接下来 5 次真正会触发的时间点。手写 crontab 时字段顺序、步进、范围很容易记混,像 "0 */2 * * 1-5" 这种混着 * / - 的写法也很难一眼判断到底几点跑、一天跑几次。与其部署上去等它没按预期执行再回头排查,不如在这里先把 cron 表达式的含义和 cron 下次执行时间核对一遍。

五段从左到右分别是分(0-59)、时(0-23)、日(1-31)、月(1-12)、周(0-7,其中 0 和 7 都表示周日)。crontab 解析的核心是把每一段展开成一个「允许值集合」:* 是整段全集,a-b 是闭区间,*/n 是从起点开始按步长取值,逗号则把多个值或区间并列起来。推算下次执行时,从当前分钟起逐分钟向后试探,只有五段同时命中的那一刻才算一次触发。这里有个常被忽略的规则:当「日」和「周」都不是 * 时,主流的 Vixie cron 走的是「或」逻辑——两段任意一段满足当天就会执行,而不是要求两者同时满足。

举两个常见的例子。"0 2 * * 1" 会被翻译成「每周一凌晨 2:00 执行」,接下来几次时间一列出来就知道有没有配对;"*/15 9-18 * * *" 则是「每天 9 点到 18 点之间,每 15 分钟一次」,适合盯接口、拉数据这类白天高频的任务。做数据库备份、日志切割、定时对账时,把定时任务表达式贴进来先验证一遍,比线上没跑或者跑错时间再回头查省事得多。核对时重点看下次执行时间落在哪几个点,往往一眼就能发现字段写反了。

要注意标准 crontab 只有五段、最小粒度是分钟,本身不支持秒;带秒的六段式是 Quartz、Spring Scheduler 那一套语法,二者不要混用。时区上,页面按你本机浏览器所在时区推算,而服务器上的 crontab 用的是服务器时区(或 CRON_TZ 设置),跨时区部署时下次时间可能差好几个小时,实际以服务器为准。还有个易错点:*/7 落在「日」字段并不等于「每隔 7 天」,因为每个月都会从 1 号重新起算。整个 cron 在线解析都在浏览器本地完成,填入的表达式不会上传。

Cron表达式解析是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“cron表达式”、“crontab解析”、“cron在线”,说的都是这个。

常见使用场景

使用方法

  1. 把内容粘贴到输入框(生成类工具直接设置选项)。
  2. 按需要选择选项,点操作按钮。
  3. 结果出现在下方,点「复制结果」即可带走。

常见问题

这个工具支持带秒的六段式 Cron 吗?
不支持,只解析标准五段式(分 时 日 月 周),最小粒度是分钟。带秒的六段或七段式是 Quartz、Spring Scheduler 的语法,需要用对应的解析器处理。
「日」和「周」两段都不是 * 时,到底按哪个执行?
按「或」逻辑,两段任意一段命中当天就会触发。比如 "0 0 1 * 1" 是每月 1 号和每周一各跑一次,而不是只在 1 号恰好又是周一时才跑。
算出来的下次执行时间和服务器上实际跑的差了几小时?
页面按你本机浏览器所在时区推算,服务器 crontab 用的是服务器时区或 CRON_TZ 设置。跨时区部署时以服务器时区为准,两边不一致时优先核对服务器时区。
支持 @daily、@reboot 或 L、W、# 这类写法吗?
主要支持 * / , - 四种常见符号和纯数字。@字符串宏、L(当月最后一天)、W、# 属于不同实现的扩展语法,不在本工具的解析范围内。
填进去的 Cron 表达式会被上传吗?
不会。表达式的翻译和下次执行时间推算都在浏览器本地完成,内容不会发送到服务器,可以放心粘贴生产环境的定时任务配置。

相关工具

查看全部「时间转换」工具 →

相关名词解释