一个Cron表达式通常由6或7个时间字段组成(秒 分 时 日 月 周),通过这些字段的灵活组合来精确指定执行时间。
特殊字符

基础示例
| 需求 | Cron表达式 (6字段格式) | 说明 |
|---|---|---|
| 每天上午9点整 | 0 0 9 * * ? | 每天09:00:00执行 |
| 每天上午9点和下午5点 | 0 0 9,17 * * ? | , 逗号用于分隔多个时间点 |
| 周一到周五上午9:30 | 0 30 9 ? * MON-FRI | - 短横线用于指定一个连续范围 |
| 每月15号中午12点 | 0 0 12 15 * ? | 在日字段指定具体日期,相应的周字段使用?占位 |
| 每月最后一天晚上11点 | 0 0 23 L * ? | L 是 "Last" 的缩写,在日字段中表示月份的最后一天 |
| 每年6月所有周三的13:15和13:45 | 0 15,45 13 ? 6 TUE | 综合运用枚举、日期、月份和星期几等字段 |
指定范围
如果希望任务在某个时间段内高频执行,可以指定时间范围。例如,0 0/30 9-17 ? * MON-FRI 表示工作日"朝九晚五"的工作时间内,每隔30分钟执行一次。
执行一次
标准的Cron是为周期性任务设计的,但可以实现"仅执行一次"的效果。为此,可以设置一个在未来特定时间执行的Cron表达式,并在任务完成后将其禁用。例如,0 15 10 25 12 ? 2025 表示在2025年12月25日的上午10:15:00 仅执行一次。
注意事项
1、日期与星期的冲突(? 字符的使用):日和周字段共同决定了一个日期,为了避免逻辑冲突,不能同时精确指定这两个字段。必须在其中一个字段中设置具体值,另一个字段则必须使用?来规避矛盾。
2、各系统实现细节差异:不同系统对Cron表达式的实现可能略有差异。例如,星期字段的起始值,在Quartz库中1代表周日,7代表周六,但在某些系统中,1可能代表周一。因此,在实际应用时,务必以你所使用的工具或平台的官方文档为准。