gpt4 book ai didi

cron - Spring 时间表 - 一个月的最后一天不工作

转载 作者:行者123 更新时间:2023-12-04 02:52:33 26 4
gpt4 key购买 nike

我想在“每个月的最后一天 10:15”和“每个月的第一个星期日”运行 spring scheduler 作业 -

我在下面尝试过 - 但它在初始化 spring 上下文时出错:

org.springframework.boot.SpringApplication:应用程序启动失败java.lang.IllegalStateException:遇到无效的@Scheduled 方法'monthEndSchedule':对于输入字符串:“L”

@Override
@Scheduled(cron = "0 15 10 L * ?")
public void monthEndSchedule() {
//
}

虽然下面的作品在“每天凌晨 1 点”运行

@Override
@Scheduled(cron = "0 0 1 * * ?")
public void surveyDailySchedule() {
//
}

我使用的 Cron 表达式引用:http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html

最佳答案

Spring Scheduler 不支持“L”输入字符串。所以,你需要做一个变通办法。

首先,为每个月可能的最后几天 (28、29、30、31) 调用调度程序。

然后,在功能 block 内使用 if block 检查这是否是最后一个日期。如果是,则执行预期的任务。

代码会是这样的-

@Scheduled(cron = "0 15 10 28-31 * ?")
public void monthEndSchedule() {
final Calendar c = Calendar.getInstance();
if (c.get(Calendar.DATE) == c.getActualMaximum(Calendar.DATE)) {
// do your stuff
}
}

关于cron - Spring 时间表 - 一个月的最后一天不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54415868/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com