Cron 表达式解析器

把 Cron 调度表达式拆解成每个字段的含义,并预览接下来的执行时间,在浏览器本地完成。

Cron 表达式

接下来的执行时间

(本地时间)

输入 Cron 表达式即可解析。

你的 Cron 表达式会在浏览器本地解析,不会发送到 BroBroGo。

常见问题

这个工具支持哪些 Cron 语法?

标准 5 位字段——分钟、小时、日期、月份、星期——支持范围(1-5)、步长(*/15)、列表(1,15)、英文月份/星期缩写(JAN、MON),以及 @yearly/@monthly/@weekly/@daily/@hourly 这些简写。有个容易忽略的规则:当"日期"和"星期"两个字段都被限定(不是 *)时,只要满足其中一个就算匹配,不需要同时满足。

"接下来的执行时间"是哪个时区?

是你浏览器所在系统的本地时区。标准 Cron 表达式本身不带时区信息,具体用哪个时区由运行它的调度程序决定,所以这里显示的是你本地时钟下的预览,不一定和服务器一致。

为什么提示"这个调度永远不会执行"?

通常是日期字段选了某些月份根本没有的天数——比如把日期设成 31,月份又包含 4、6、9、11 月。把日期改成所有选中月份都存在的天数,或者拆成几条单独的表达式即可。

Cron 表达式的组成结构与解析机制

Cron 表达式是任务调度系统中的核心配置工具,用于定义定时任务的执行周期。一个标准的 Cron 表达式由 5 个空格分隔的字段组成,从左到右依次代表:分钟、小时、日期、月份和星期。

本解析器可以将输入的 Cron 表达式拆解为对应的字段含义,并计算出后续的执行时间。在解析过程中,各个字段的对应关系如下:

  • 分钟:控制任务在每小时的哪一分钟触发。
  • 小时:控制任务在一天中的哪一个小时触发。
  • 日期:控制任务在每个月的哪一天触发。
  • 月份:控制任务在一年中的哪一个月触发。
  • 星期:控制任务在星期几触发。

本工具支持标准 5 位 Cron 语法,包括范围(如 1-5)、步长(如 */15)、列表(如 1,15)、英文月份缩写(如 JAN)以及英文星期缩写(如 MON)。此外,工具还支持 @yearly@monthly@weekly@daily@hourly 等标准快捷方式。

需要注意的是,本工具不支持包含第六个字段(秒)的非标准语法,也不支持 Quartz 框架中的 LW# 等特殊扩展字符。


字段解读规则与特殊匹配逻辑

在解析 Cron 表达式时,不同符号的组合会产生不同的调度逻辑:

  1. 通配符(*:在字段中表示“任意”。例如,在小时字段中表示“任意”小时都会执行。
  2. 步长(*/n:表示每隔固定周期执行一次。解析器会将其翻译为:
    • 分钟字段:每 {n} 分钟
    • 小时字段:每 {n} 小时
    • 日期字段:每 {n}
    • 月份字段:每 {n} 个月
    • 星期字段:每 {n}
  3. 双重限制匹配:当“日期”和“星期”两个字段都被限定(即两个字段的值都不是 *)时,调度系统会采用“或”逻辑。这意味着只要满足其中一个字段的条件,任务就会执行,而不需要同时满足。

异常调度与无效表达式判定

在配置 Cron 表达式时,语法的正确性并不能完全保证任务能够正常运行。解析器在处理输入时,会遇到以下几种状态:

  • 空输入:如果输入框为空,工具会返回到“输入 Cron 表达式即可解析。”状态。
  • 语法错误:如果表达式不符合 5 位标准语法或包含不支持的字符,工具会提示“无效的 Cron 表达式。”。
  • 逻辑冲突(无法执行):如果表达式语法正确,但其设定的时间组合在现实中永远无法满足,工具会提示“这个调度永远不会执行——请检查日期是不是选了某些月份没有的天数。”。这种情况通常发生在日期字段指定了 31 号,而月份字段中包含了 4 月、6 月、9 月或 11 月等只有 30 天的月份。

浏览器本地解析与隐私保护

本工具的解析与执行时间预测完全在客户端完成。

当你在输入框中输入 Cron 表达式(例如示例值 */15 9-17 * * MON-FRI)并调整显示条数(数量范围为 1 至 20)时,所有的解析计算和时区转换均在你的浏览器本地进行。你的 Cron 表达式会在浏览器本地解析,不会发送到 BroBroGo。这种本地处理机制在保障数据隐私的同时,也确保了即时的响应速度。


常见问题解答

这个工具支持哪些 Cron 语法?

标准 5 位字段——分钟、小时、日期、月份、星期——支持范围(1-5)、步长(*/15)、列表(1,15)、英文月份/星期缩写(JAN、MON),以及 @yearly/@monthly/@weekly/@daily/@hourly 这些简写。有个容易忽略的规则:当"日期"和"星期"两个字段都被限定(不是 *)时,只要满足其中一个就算匹配,不需要同时满足。

"接下来的执行时间"是哪个时区?

是你浏览器所在系统的本地时区。标准 Cron 表达式本身不带时区信息,具体用哪个时区由运行它的调度程序决定,所以这里显示的是你本地时钟下的预览,不一定和服务器一致。

为什么提示"这个调度永远不会执行"?

通常是日期字段选了某些月份根本没有的天数——比如把日期设成 31,月份又包含 4、6、9、11 月。把日期改成所有选中月份都存在的天数,或者拆成几条单独的表达式即可。