Cron表达式工具介绍
本Cron表达式生成器与解析器是一款面向开发者和运维人员的免费在线工具,能够帮助您快速生成和理解Cron定时任务表达式。工具提供可视化生成器和智能解析器两种模式,所有计算均在浏览器本地完成,无需联网,保护您的表达式隐私。
Cron表达式格式
Cron表达式是一个字符串,用于定义定时任务的执行时间规则。标准格式由6或7个字段组成,用空格分隔:
秒 分 时 日 月 周 [年]
| 字段 | 允许值 | 特殊字符 |
|---|---|---|
| 秒 | 0-59 | , - * / |
| 分 | 0-59 | , - * / |
| 时 | 0-23 | , - * / |
| 日 | 1-31 | , - * ? / L W |
| 月 | 1-12 或 JAN-DEC | , - * / |
| 周 | 1-7 或 SUN-SAT | , - * ? / L # |
| 年(可选) | 留空 或 1970-2099 | , - * / |
特殊字符说明
*:表示任意值,即该字段的每个可能值都匹配。?:表示不指定值,仅用于日和周字段。当日和周其中一个指定了具体值时,另一个应设为?,避免冲突。-:表示范围,如1-5表示1到5。,:表示列表,如1,3,5表示1、3、5。/:表示步长,如*/5表示每5个单位,0-30/5表示0到30之间每5个单位。L:表示最后,仅用于日和周字段。日字段中表示当月最后一天,周字段中表示当月最后一个周几。W:表示工作日,仅用于日字段。#:表示第几个,仅用于周字段,如3#2表示当月第2个周二。
常用表达式示例
0 0 12 * * ?:每天中午12点执行0 15 10 ? * *:每天上午10点15分执行0 0/5 * * * ?:每5分钟执行一次0 0 2 * * ?:每天凌晨2点执行0 0 0 1 * ?:每月1号凌晨执行0 0 0 ? * MON:每周一凌晨执行0 0 9-18 * * ?:每天9点到18点整点执行0 0 12 ? * MON-FRI:工作日中午12点执行
常见问题
Q:5位和6位Cron表达式有什么区别?
A:5位Cron表达式格式为分 时 日 月 周,是Linux/Unix系统crontab的标准格式,最小粒度为分钟。6位格式为秒 分 时 日 月 周,是Quartz等Java调度框架使用的格式,最小粒度为秒。本工具默认使用6位格式,同时兼容5位格式的解析。
Q:日和周字段为什么要使用??
A:在Cron表达式中,日和周字段是互斥的——当其中一个字段指定了具体值来限制执行日期时,另一个字段必须设为?表示不指定,否则会产生冲突。例如,要在每月15号执行,日字段设为15,周字段就必须设为?;要在每周一执行,周字段设为MON,日字段就必须设为?。
Q:生成的表达式可以直接用在哪些框架中?
A:6位格式(含秒)的表达式可直接用于Quartz、Spring Schedule、xxl-job、Elastic-Job等Java调度框架。5位格式可直接用于Linux crontab、Node.js node-cron、Python APScheduler等。使用时请注意不同框架对特殊字符的支持可能略有差异。
Q:执行时间预览是如何计算的?
A:工具会解析表达式中每个字段的合法值集合,然后从当前时间开始,按天递增检查年月日周是否匹配,在匹配的日期内枚举所有可能的时分秒组合,筛选出未来的执行时间。最多预览未来10次执行,计算过程全部在浏览器本地完成。