Spring定时器@Scheduled中不支持L、W等关键字解决办法
如果你想在每月月底执行定时一次你的功能,此时,你的Cron表达式这样写(cron=“0 0 23 L * ?”)是没有问题的,但是Spring中默认不支持L W C等字符,那怎么设置为最后一天执行呢?参考如下代码:
@Scheduled(cron="0 0 23 28-31 * ?")
public T test(){
final Calendar c = Calendar.getInstance();
if (c.get(Calendar.DATE) == c.getActualMaximum(Calendar.DATE)) {
//如果是最后一天
excute(); //执行
System.out.println("定时任务执行啦!");
}
}
其中,由于每月的天数可能不一样,所以将可能的情况都设置好,定时策略改为每月的28~30号执行,此时如果想在每月的最后一天执行就只需要添加一个判断就好了,判断当天是否为当前月份最后一天。
Cron表达式:cron表达式详解
Calendar类的使用:Java Calendar所有方法