You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Cron表达式调整:如何让工作日9-17点每30分执行且末次为17:00

解决Spring Cron定时任务最后一次执行时间问题

你遇到的问题是原表达式里的9-17包含17点整和17点30分,而0/30会在每个小时的0分、30分触发,导致17:30额外执行一次。要让最后一次执行停在17:00,有两种简洁的修改方式:

方法一:拆分表达式组合

Spring的@Scheduled注解支持传入多个表达式的数组,直接覆盖所有需要执行的时间点:

@Scheduled(cron = {"0 0/30 9-16 * * MON-FRI", "0 0 17 * * MON-FRI"})
public void scheduledTask() {
    // 你的任务逻辑
}
  • 第一个表达式0 0/30 9-16 * * MON-FRI:处理工作日9:00到16:30的每30分钟执行(9:00、9:30...16:30)
  • 第二个表达式0 0 17 * * MON-FRI:单独触发工作日17:00的执行

方法二:精确分钟匹配

也可以指定分钟为0,30,缩小小时范围到9-16,再补充17:00的单独触发,效果和方法一完全一致:

@Scheduled(cron = {"0 0,30 9-16 * * MON-FRI", "0 0 17 * * MON-FRI"})
public void scheduledTask() {
    // 你的任务逻辑
}

两种方式都能确保最后一次执行时间为17:00,不会触发17:30的额外任务。

内容的提问来源于stack exchange,提问作者dev-rifaii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 22:00:02