Cron 表达式解析器接受一条 cron 表达式,输出人类可读的中文描述、ASCII 字段图、最近 5 次执行时间和上 5 次执行时间。它适合在编写定时任务前验证表达式逻辑,以及排查调度行为与预期不符的问题。
Cron 表达式语法与字段说明
工具支持 5 字段(Linux 标准)和 6 字段(含秒)两种格式:
- 5 字段:
分钟 小时 日 月 周,适合大多数 Linux crontab 场景 - 6 字段及以上:
秒 分钟 小时 日 月 周,适合 Spring、Quartz 等需要秒粒度的框架
每个字段支持 *(任意)、,(列举)、-(范围)、/(步进)四种基本操作符,以及 L、#、W、H、? 五种特殊字符。
特殊字符 L、# 和 W 的用法
L(Last) 在日字段中表示当月最后一天,在周字段中表示该月最后一个指定星期几:
0 18 L * * # 每月最后一天 18:00
30 10 * * 5L # 每月最后一个周五 10:30
#(第 N 个) 仅用于周字段,格式 星期#第几个,值从 1(周日)到 7(周六):
0 10 ? * 2#3 # 每月第三个周二 10:00
0 9 ? * 1#1 # 每月第一个周日 09:00
? 用于日或周字段表示"不指定",避免日和周同时设置产生歧义:
30 9 ? * MON-FRI # 周一至周五 09:30,日字段不限
0 12 15 * ? # 每月 15 日 12:00,周字段不限
实用表达式示例
*/5 * * * * # 每 5 分钟执行一次
0 9 * * 1 # 每周一 09:00
0 0 1 * * # 每月 1 日零点
0/15 0 * * ? # 从 0 分开始每 15 分钟
15,45 13 ? 6 Tue # 6 月每个周二 13:15 和 13:45
0-5 13 * * ? # 每天 13:00 至 13:05 每分钟
0 18 L * ? # 每月最后一天 18:00
0 10 ? * 2#3 # 每月第三个周二 10:00
执行时间列表的上限
occurrences 参数控制显示的执行次数,最小 1,最大 50,工具默认显示 5 次。在极端规则(如仅每年执行 1 次的表达式)下,迭代器达到边界时会提前终止,列表中显示的条目可能少于设定次数,属于正常行为。
时区与 H 占位符
tz 参数接受 IANA 时区名(如 Asia/Shanghai),由底层库处理夏令时边界,结果时间会按所选时区展示。H 是稳定抖动占位符,未指定 hashSeed 时会随环境波动,不适合在不同机器上期望相同触发时间的场景。