Cron 表达式解释
按严格 5 段 Vixie cron(分 时 日 月 周)解析并展开每一段,给出指定起点后最多 20 次 UTC 匹配。越界值、错误段数、宏与非法步长都有明确结果;绝不注册任何实际定时任务。
输入与参数
input— Cron 表达式(严格 5 段)from— 起点(可选,带时区的 ISO;留空取当前时间)count— 推算次数(1–20)
真实示例
input=*/15 0-4 1,15 * 1-5, from=2023-11-14T22:13:20Z, count=3
→ minute=[0,15,30,45], hour=[0,1,2,3,4];接下来 3 次:2023-11-15T00:00:00.000Z / 00:15 / 00:30(UTC)。输入 60 * * * * 报 INVALID_CRON;@daily 报 INVALID_CRON;4 段或 6 段报 CRON_FIELDS。
限制与失败处理
严格 5 段 Vixie 语义(UTC),不支持秒/年字段、@宏、L/W/#、随机 H 与时区感知调度;日与周都受限时按 OR 匹配。仅推算最多 366 天、最多 20 次,合法但不可能的组合(如 30 FEB)明确返回空结果。输入上限 2 KiB。
FAQ
会真的执行任务吗?
不会。纯函数解析与有限 366 天扫描,源码没有 setTimeout / setInterval / Worker / crontab 调用,也没有服务端调度接口。
支持秒字段或 @daily 吗?
不支持,以免混用 Quartz/不同调度器方言;只接受 5 段。周字段 0 与 7 都视为周日,并支持 JAN–DEC、SUN–SAT 三字母名称。