关于@Scheduled cron表达式中不支持每月最后一天`L`的解决方案

摘要:
解决方案:@计划(cron=“001028-31*?”)//在每个月的最后一天的10:00执行privatevoidconfigureTasks(){boolean=false;finalCalendarcalendar=Calendar.getInstance();//如果不是最后一天,则如果(!(Calendar.get(Calendar.DATE)==Calendar
解决方案:
@Scheduled(cron = "0 0 10 28-31 * ?")//每月最后一天10点执行
private void configureTasks(){

  boolean flag = false;
   final Calendar calendar = Calendar.getInstance();
   //如果不是最后一天 则不执行定时任务
   if (!(calendar.get(Calendar.DATE) == calendar.getActualMaximum(Calendar.DATE))){
        return;
    }
    if (flag) {
        //定时任务
    }    
}   

报错信息的原因: 
java.lang.IllegalStateException: Encountered invalid @Scheduled method 'LastReportOfMonth': For input string: "L"
Spring默认定时@Scheduled不支持L、W、C关键字
详情可看源码
 Cron 的使用:
Seconds: 可出现", - * /"四个字符,有效范围为0-59的整数 
Minutes: 可出现", - * /"四个字符,有效范围为0-59的整数 
Hours: 可出现", - * /"四个字符,有效范围为0-23的整数 
DayofMonth :可出现", - * / ? L W C"八个字符,有效范围为0-31的整数 
Month: 可出现", - * /"四个字符,有效范围为1-12的整数或JAN-DEc 
DayofWeek: 可出现", - * / ? L C #"四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推 
Year: 可出现", - * /"四个字符,有效范围为1970-2099年 //一般用不上

  

每一个域都使用数字,但还可以出现如下特殊字符,它们的含义是: 
(1) *:表示匹配该域的任意值,假如在Minutes域使用*, 即表示每分钟都会触发事件。

(2) ?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和 DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样。 

(3) -:表示范围,例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次 

(4) /:表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次. 

(5) ,:表示列出枚举值值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。 

(6) L:表示最后,只能出现在DayofWeek和DayofMonth域,如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。

(7) W:表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件。例如:在 DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一 到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份。

(8) LW:这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五。 

(9) #:用于确定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2,表示某月的第二个星期三。 

  

免责声明:文章转载自《关于@Scheduled cron表达式中不支持每月最后一天`L`的解决方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇传奇身上装备升级系列脚本,以及UPGRADEITEMEX 脚本的详细参数解释Vue-pdf实现在线预览PDF文件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[转]ubuntu下解压zip文件

1.功能作用:解压缩zip文件2.位置:/usr/bin/unzip3.格式用法:unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]4.主要参数    -c 将解压缩的结果显示到屏幕上,并对字符做适当的转换    -p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不...

http请求 url 传递参数(特殊字符)解决方法

有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。下表中列出了一些URL特殊符号及编码       十六进制值 1. + URL 中+号表示空格 %2B 2. 空格 URL中的空格可以用+号或者编码 %20 3. / 分隔目录和子目录 %2F 4. ? 分隔实际的 URL 和参数 %3F...

详解centos下vi的用法

     vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。 1、vi...

超好玩!10款神奇的字符图案 & 词汇云生成工具

  在这里,我们推荐10款惊人的字符图案生成工具。词云可以定义为词频的图形表示,而字符图案发生器是一个把数据,如文字和标签在以视觉和吸引人的方式展示的简单的工具。这些生成工具具有不同的功能,其中包括不同的字体,形状,布局和编辑功能。 您可能感兴趣的相关文章 10大流行的 Metro UI 风格 Bootstrap 主题 推荐35款精致的 CSS3 和 H...

【if...else】身高预测

每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传、饮食习惯与体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关。设faHeight为其父身高,moHeight为其母身高,身高预测公式为男性成人时身高=(faHeight + moHeight)×0.54女性成人时身高=(faHeig...

【转载】C#中将字符串分割成字符数组

在C#中字符串类型String是由一系列的单个字符组合而成,其实可以通过字符串String对象ToCharArray()方法来将字符串中的元素逐一存在数据类型为Char的一维数组中。 例如将字符str = "ABCDEFG"分割为到一维数组可用下列语句: string str = "ABCD"; char[] strCharArr = str...