Scheduled 每月最后一天晚上8点 ;关于@Scheduled cron表达式中不支持每月最后一天`L`的解决方案
- 工作小总结
- 时间:2021-10-08 19:49
- 4241人已阅读
简介
关于@Scheduled cron表达式中不支持每月最后一天`L`的解决方案
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
在工作中,我们有时候会用定时任务。Scheduled 每月最后一天晚上8点
有两种写法:
@Scheduled(cron = "0 0 20 28–31 * ?")
public void carryOver() {
//TODO
}这种写法,如果报错:

L不识别。
关于Spring定时任务每月最后一天 corn表达式使用L 报错 可以使用如下解决办法:
修改:第二种写法:
@Scheduled(cron = "0 59 23 28-31 * ?")
public void execute() {
final Calendar c = Calendar.getInstance();
/**
* c.get(Calendar.DATE) 当前时间
* c.getActualMaximum(Calendar.DATE) 本月最后一日
*/
if (c.get(Calendar.DATE) == c.getActualMaximum(Calendar.DATE)) {
//show your code
}
}说明:需要在代码里面判断是否当月最后一天。
因为:首先,每月最后一天可能为(28,29,30,31)这几天只需要在这几天调度程序,在程序中判断是否为最后一天,如果是则执行需要执行的代码块