cron 表达式解读
Cron Parser
用大白话解释一条 cron 表达式,并按选定时区列出接下来几次执行的时刻。
读一条 cron 表达式,用大白话说出它什么时候运行,然后按你选的时区列出接下来几次执行。五个字段或带秒的六个字段,加上 `@daily` 之类、表示最后一天的 `L` 和表示第三个星期五的 `5#3`。
表达式
五个字段,或者在最前面加上秒的六个字段。`@daily`、`@hourly` 之类也能用。
用大白话说
星期一到星期五 9点到17点里每15分钟执行。
逐字段查看
| 字段 | 值 | 含义 |
|---|---|---|
| 分0-59 | 每15分钟`*/15` 是每一刻钟,`15` 是每小时的第 15 分。 | |
| 时0-23 | 9点到17点一律 24 小时制,除非调度器另有规定,一律用服务器的时区。 | |
| 日1-31 | 每天`L` 是最后一天。写 31 的话,短的月份就直接不触发。 | |
| 月1-12 或 JAN-DEC | 每月名称不区分大小写。 | |
| 星期0-7 或 SUN-SAT | 星期一到星期五0 和 7 都是星期日。`5#3` 是第三个星期五,`5L` 是最后一个。 |
接下来的执行
时区
UTC
按上面选的时区计算,而不是按浏览器的。夏令时跳过的钟面时间,这里也跳过。
怎么用
粘贴表达式
它会被描述成一句话,每个字段单独列出,带它的取值范围和你的值对它意味着什么。
设置时区
这是检查一条 cron 的全部意义。你的调度器在服务器的时区里运行,通常是 UTC,很少是你的——接下来几次执行的列表按你选的时区计算,不是你浏览器的。
读接下来几次执行
带星期几和每两次之间的间隔。你预期隔一天却看到两次执行只隔一小时,是发现某个字段放错位置最快的办法。
常见问题
为什么 `0 0 * * 1` 不在 1 号运行?
因为第五个字段是星期几,不是几号——`1` 是星期一。几号是第三个字段。第五个字段里 `0` 和 `7` 都表示星期日。
夏令时切换时任务会怎样?
时钟跳过的那个墙上时间不会发生,这个列表也跳过它。重复出现的时间可能触发两次,取决于调度器。这就是在有夏令时的时区里 `0 2 * * *` 是一个糟糕时点的原因。
几号和星期几是「与」还是「或」的关系?
两者都受限制时是「或」——Vixie cron 的一个怪癖,熬过了每一次修正它的尝试。`0 0 1 * 1` 在每月 1 号*和*每个星期一都触发,而不是在恰好是 1 号的星期一。适用时这里的描述会把这一点写明。
每个调度器都支持 `L` 和 `#` 吗?
不。它们是 Quartz 的扩展,Quartz、Spring 和几个云调度器支持,普通的 Unix cron 没有。秒字段也是同样的情况。依赖任何一个之前先查你的调度器。
可以从这些接进来
接下来
这些工具吃得下当前工具的产出,结果可以直接送过去。
工作日计算器
Business Day Counter
扣掉周末和韩国法定节假日之后,数两个日期之间有几个工作日,或者算出 N 个工作日之后是哪一天。
cron 表达式生成
Cron Builder
每个字段一个输入框,旁边写着允许的取值范围,键入就拼出 cron 表达式,每改一次就把对应的执行计划显示出来。
时区换算
Timezone Converter
把同一个时刻换算到多个时区,并用重叠时段表来安排跨地区的会议。
JSON ⇄ CSV 互转
JSON ⇄ CSV
把嵌套 JSON 按点路径列名拍平成列,或者从表格重新拼回对象。
JSON 对比
JSON Diff
按结构比较两份 JSON,忽略键的顺序,报出新增、删除和改动的路径。
JSON 格式化与校验
JSON Formatter & Validator
把 JSON 美化成缩进形式或压成一行,校验语法并直接指出出错的行和列。