@Scheduled(cron = "0 15 16 * * ?") 定时执行可以排除周六周日
时间: 2024-06-15 13:02:50 浏览: 256
js 取时间差去掉周六周日实现代码
根据提供的引用内容,@Scheduled注解是Spring框架中用于定时执行任务的注解。cron表达式是一种用于指定任务执行时间的表达式。对于给定的cron表达式"0 15 16 * * ?",它表示在每天的16:15执行任务。现在你想要排除周六和周日,可以使用WeeklyCalendar来实现。WeeklyCalendar是一个可以指定每星期的星期几的日历类,你可以将它与调度器(scheduler)一起使用,以排除特定的星期几。例如,如果你想要排除周六和周日,你可以将WeeklyCalendar设置为排除星期六和星期日,然后将其添加到调度器中。下面是一个示例代码[^1]:
```java
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.scheduling.support.ScheduledMethodRunnable;
import org.springframework.scheduling.support.ScheduledMethodRunnable;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
public class MyScheduler {
@Scheduled(cron = "0 15 16 * * ?")
public void myTask() {
// 任务逻辑
}
public static void main(String[] args) {
// 创建调度器
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.initialize();
// 创建WeeklyCalendar并设置排除的星期几
WeeklyCalendar calendar = new WeeklyCalendar();
calendar.setDayExcluded(Calendar.SATURDAY, true);
calendar.setDayExcluded(Calendar.SUNDAY, true);
// 创建CronTrigger并设置cron表达式
CronTrigger trigger = new CronTrigger("0 15 16 * * ?", TimeZone.getDefault());
trigger.setCalendar(calendar);
// 创建ScheduledMethodRunnable并设置要执行的任务
ScheduledMethodRunnable task = new ScheduledMethodRunnable(new MyScheduler(), "myTask");
// 将任务和触发器添加到调度器中
scheduler.schedule(task, trigger);
}
}
```
这样,定时任务将在每天的16:15执行,但会排除周六和周日。
阅读全文