五段星号和数字,没人背得下来。粘贴进来,立刻看到它到底什么时候跑、每一段管什么,还有接下来 5 次的具体时间——按你电脑的时区算。
翻译我的表达式难点不在语法,在两条默认规则。第一条:五段和六段是两个世界。标准 crontab 是「分 时 日 月 周」,Quartz 和 Spring 在最前面多一个秒位。少一段多一段,任务要么不跑,要么一天跑 1440 次。
第二条:日期和星期同时写了,是「或」不是「与」。0 0 1 * 1 不是「每月 1 号而且是周一」,而是「每月 1 号,或者任意一个周一」。这是 crontab 里最经典的坑,很多人以为自己配的是「每月第一个周一」。
这个页面只做三件事:把每段拆开讲清楚、算出接下来 5 次真实执行时间、把可能踩的坑先说出来。算不出来(比如 2 月 30 日)会直接告诉你,不装作能跑。
页面不存任何东西:表达式只在你的浏览器里算,不上传、不记录,刷新就清空。
常见写法,点一下直接填
一句话说明
| 段 | 原文 | 含义 |
|---|
接下来 5 次执行
常见写法速查(点一行可回填)
| */5 * * * * | 每 5 分钟 |
| 0 * * * * | 每小时整点 |
| 30 2 * * * | 每天凌晨 2:30 |
| 0 9 * * 1-5 | 工作日 9:00 |
| 0 9 * * 1 | 每周一 9:00 |
| 0 0 1 * * | 每月 1 号 0:00 |
| 0 3 * * 6 | 每周六 3:00 |
| 0 0 1 1 * | 每年 1 月 1 日 0:00 |
能。Quartz 和 Spring 会在最前面多一个秒位,页面会自动忽略它、按标准 5 段计算,并在结果上方提示你确认目标平台。反过来,把 6 段直接贴进 Linux 的 crontab 会报错,所以要看清你用的是哪个。
页面按你设备的时区算,服务器多数跑 UTC。每次执行时间下面都标了 UTC 时刻,直接拿去和日志对。差 8 小时是时区问题,不是表达式写错。
标准 cron 写不出来。0 9 1-7 * 1 得到的是「1 到 7 号,或者任意周一」,范围反而更宽。要精确只能在脚本里判断日期,或者换 Quartz 的 # 语法。页面遇到这种组合会提示你。
不会。全部在你的浏览器里算,不发任何请求,也没有记录,刷新就没了。crontab 里常带路径和账号,不用担心被留下来。