Cron 翻译器

0 9 * * 1-5 翻译成人话,Cron 不再靠猜

五段星号和数字,没人背得下来。粘贴进来,立刻看到它到底什么时候跑、每一段管什么,还有接下来 5 次的具体时间——按你电脑的时区算。

翻译我的表达式
01

为什么 cron 总是不生效

难点不在语法,在两条默认规则。第一条:五段和六段是两个世界。标准 crontab 是「分 时 日 月 周」,Quartz 和 Spring 在最前面多一个秒位。少一段多一段,任务要么不跑,要么一天跑 1440 次。

第二条:日期和星期同时写了,是「或」不是「与」。0 0 1 * 1 不是「每月 1 号而且是周一」,而是「每月 1 号,或者任意一个周一」。这是 crontab 里最经典的坑,很多人以为自己配的是「每月第一个周一」。

这个页面只做三件事:把每段拆开讲清楚、算出接下来 5 次真实执行时间、把可能踩的坑先说出来。算不出来(比如 2 月 30 日)会直接告诉你,不装作能跑。

02

粘贴,或者说句人话

页面不存任何东西:表达式只在你的浏览器里算,不上传、不记录,刷新就清空。

常见写法,点一下直接填

03

看懂结果

一句话说明

标准写法
    段原文含义

    接下来 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
      04

      常见疑问

      我的表达式是 6 段、带秒的,能用吗?

      能。Quartz 和 Spring 会在最前面多一个秒位,页面会自动忽略它、按标准 5 段计算,并在结果上方提示你确认目标平台。反过来,把 6 段直接贴进 Linux 的 crontab 会报错,所以要看清你用的是哪个。

      算出来的时间跟服务器日志差 8 小时?

      页面按你设备的时区算,服务器多数跑 UTC。每次执行时间下面都标了 UTC 时刻,直接拿去和日志对。差 8 小时是时区问题,不是表达式写错。

      「每月第一个周一」怎么写?

      标准 cron 写不出来。0 9 1-7 * 1 得到的是「1 到 7 号,或者任意周一」,范围反而更宽。要精确只能在脚本里判断日期,或者换 Quartz 的 # 语法。页面遇到这种组合会提示你。

      页面会保存我输入的表达式吗?

      不会。全部在你的浏览器里算,不发任何请求,也没有记录,刷新就没了。crontab 里常带路径和账号,不用担心被留下来。