0 * * * * ?
每分钟的第0秒执行
0 0 * * * ?
每小时的第0分执行
0 0 0 * * ?
每天凌晨0点执行
0 0 12 * * ?
每天12:00:00执行
0 0 0 ? * MON
每周一凌晨0点执行
0 0 0 1 * ?
每月1日凌晨0点执行
0 0 0 1 1 ?
每年元旦凌晨0点执行
0/5 * * * * ?
每5秒执行一次
0 0/5 * * * ?
每5分钟执行一次
0 0 8-18 * * ?
8点到18点,每小时执行
0 30 9 ? * MON-FRI
周一至周五上午9:30执行
0 0 0 L * ?
每月最后一天凌晨0点执行
| 字段 | 允许值 | 允许特殊字符 | 说明 |
|---|---|---|---|
| 秒 | 0-59 | , - * / |
0表示第0秒 |
| 分 | 0-59 | , - * / |
0表示第0分 |
| 时 | 0-23 | , - * / |
0表示零点 |
| 日 | 1-31 | , - * ? / L W |
L表示最后一天,W表示最近工作日 |
| 月 | 1-12 或 JAN-DEC | , - * / |
可使用英文缩写 |
| 周 | 0-6 或 SUN-SAT | , - * ? / L # |
0=周日,L表示最后一个,#表示第几个 |
特殊字符说明:
* 匹配所有值 ? 不指定值(日/周互斥时使用) - 范围(如 1-5)
, 枚举多个值(如 1,3,5) / 步长(如 0/5 表示从0开始每5个)
L 最后(日字段中表示月的最后一天,周字段中表示最后一个周X)
W 最近工作日(如 15W 表示离15号最近的工作日) # 第几个(如 6#3 表示第3个周六)
Cron表达式是一种用于定义定时任务执行时间的字符串格式,广泛应用于Linux系统任务调度、Java应用定时任务配置等场景。本工具提供可视化的Cron表达式编辑器,支持6位(含秒)和标准5位格式,实时预览未来执行时间,帮助开发者快速生成和验证Cron表达式。
Cron表达式由多个用空格分隔的字段组成。标准Linux crontab使用5个字段:分 时 日 月 周;Spring/Quartz等Java框架使用6个字段:秒 分 时 日 月 周;部分系统还支持第7个字段表示年份。本工具默认使用6字段格式(含秒)。
5位格式(分 时 日 月 周)是Linux crontab的标准格式,最小精度为分钟;6位格式(秒 分 时 日 月 周)是Spring和Quartz的格式,支持秒级精度;7位格式在6位基础上增加年份字段,Quartz支持但较少使用。不同框架对字段的解析规则也略有差异。
星号(*)表示匹配该字段的所有值,可用于任何字段。问号(?)表示"不指定",仅能用于日和周两个字段。由于日和周存在逻辑互斥(如"每月15号"和"每周一"可能冲突),当其中一个字段指定具体值时,另一个应设为问号。在Spring中两者等价,在Quartz中必须严格使用问号。
常用示例:每分钟执行 0 * * * * ?,每小时执行 0 0 * * * ?,每天零点 0 0 0 * * ?,工作日9:30 0 30 9 ? * MON-FRI,每5分钟 0 0/5 * * * ?,每月1号零点 0 0 0 1 * ?,每月最后一天 0 0 0 L * ?。
有。Cron表达式本身不包含时区信息,执行时间取决于运行环境的时区设置。Linux crontab使用系统时区;Spring默认使用JVM时区,可通过@Scheduled的zone属性指定;Quartz通过CronTrigger.setTimeZone()设置。跨时区部署时需特别注意配置。
使用本工具即可在线测试:在输入框中填写或修改各字段的值,页面会实时计算并展示未来8次执行时间。如果表达式格式错误或无法匹配,会显示错误提示。也可以点击"常用表达式"中的预设模板快速验证。