后台近期做了一个数据同步的功能,要求30分钟执行一次,EAS后台事务中以前常用的是每天定点执行任务,本次需求可以通过自定义中的Cron表达式来实现,这里总结一下设置心得:
1)表达式案例(图2):
a. 0 0/30 * * * ?
描述:指的是“从今天起(忽略周),从0分开始,每30分钟执行一次”,"?"代表忽略的意思,案例中是忽略周。
b. 0 0 2/4 * * ?
描述:从今天起,从2点开始,每4个小时执行一次;
2)Cron表达式由七个部分组成,每个部分之间用空格分开,一下为相关规则:
名称 | 是否必须 | 允许值 | 特殊字符 |
秒 | 是 | 0-59 | , - * / |
分 | 是 | 0-59 | , - * / |
时 | 是 | 0-23 | , - * / |
日 | 是 | (1-31) | , - * ? / L W C |
月 | 是 | 1-12 或JAN-DEC | , - * / |
周 | 是 | 1-7或SUN-SAT | , - * ? / L W # |
年 | 否 | 空或1970-2099 | , - * / |
3)特殊字符描述:
“-”: 表示一个指定的范围,例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次
“,”: 表示列出枚举值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次;
“*”:字符代表所有可能的值
“/”:表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域使用“2/15”表示2分钟时执行一次,并之后每隔15分钟执行一次;“2”表示为从“2”分开始;
“?”:表示每月的某一天,或第周的某一天
“L”:用于每月,或每周,表示为每月的最后一天,或每个月的最后星期几如“6L”表示“每月的最后一个星期五
“W”:表示为最近工作日,如“15W”放在每月(day-of-month)字段上表示为“到本月15日最近的工作日
"LW":这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五。
“#”:是用来指定“的”每月第n个工作日,例 在每周(day-of-week)这个字段中内容为"6#3" or "FRI#3" 则表示“每月第三个星期五
图1:
图2: