您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页java生成cron表达式

java生成cron表达式

来源:化拓教育网
java⽣成cron表达式

bean类:

package com.cst.klocwork.service.cron;

public class TaskScheduleModel { /**

* 所选作业类型: * 1 -> 每天 * 2 -> 每⽉ * 3 -> 每周

* 4 ->间隔(每隔2个⼩时,每隔30分钟) */

Integer jobType;

/**⼀周的哪⼏天*/

Integer[] dayOfWeeks;

/**⼀个⽉的哪⼏天*/ Integer[] dayOfMonths;

/**秒 */

Integer second;

/**分 */

Integer minute;

/**时 */

Integer hour;

public Integer getJobType() { return jobType; }

public void setJobType(Integer jobType) { this.jobType = jobType; }

public Integer[] getDayOfWeeks() { return dayOfWeeks; }

public void setDayOfWeeks(Integer[] dayOfWeeks) { this.dayOfWeeks = dayOfWeeks; }

public Integer[] getDayOfMonths() { return dayOfMonths; }

public void setDayOfMonths(Integer[] dayOfMonths) { this.dayOfMonths = dayOfMonths; }

public Integer getSecond() { return second; }

public void setSecond(Integer second) { this.second = second; }

public Integer getMinute() { return minute; }

public void setMinute(Integer minute) { this.minute = minute; }

public Integer getHour() { return hour; }

public void setHour(Integer hour) { this.hour = hour; }

}

  util类:

/**

* @ClassName: CronUtil

* @Description: Cron表达式⼯具类 * ⽬前⽀持三种常⽤的cron表达式

* 1.每天的某个时间点执⾏ 例:12 12 12 * * ?表⽰每天12时12分12秒执⾏

* 2.每周的哪⼏天执⾏ 例:12 12 12 ? * 1,2,3表⽰每周的周1周2周3 ,12时12分12秒执⾏ * 3.每⽉的哪⼏天执⾏ 例:12 12 12 1,21,13 * ?表⽰每⽉的1号21号13号 12时12分12秒执⾏ * @author * @date * */

public class CronUtil { /** *

*⽅法摘要:构建Cron表达式 *@param taskScheduleModel *@return String */

public static String createCronExpression(TaskScheduleModel taskScheduleModel){ StringBuffer cronExp = new StringBuffer(\"\");

if(null == taskScheduleModel.getJobType()) {

System.out.println(\"执⾏周期未配置\" );//执⾏周期未配置 }

if (null != taskScheduleModel.getSecond()

&& null != taskScheduleModel.getMinute() && null != taskScheduleModel.getHour()) { //秒

cronExp.append(taskScheduleModel.getSecond()).append(\" \"); //分

cronExp.append(taskScheduleModel.getMinute()).append(\" \"); //⼩时

cronExp.append(taskScheduleModel.getHour()).append(\" \");

//每天

if(taskScheduleModel.getJobType().intValue() == 1){ cronExp.append(\"* \");//⽇ cronExp.append(\"* \");//⽉ cronExp.append(\"?\");//周 }

//按每周

else if(taskScheduleModel.getJobType().intValue() == 3){ //⼀个⽉中第⼏天

cronExp.append(\"? \"); //⽉份

cronExp.append(\"* \"); //周

Integer[] weeks = taskScheduleModel.getDayOfWeeks(); for(int i = 0; i < weeks.length; i++){ if(i == 0){

cronExp.append(weeks[i]); } else{

cronExp.append(\ } } }

//按每⽉

else if(taskScheduleModel.getJobType().intValue() == 2){ //⼀个⽉中的哪⼏天

Integer[] days = taskScheduleModel.getDayOfMonths(); for(int i = 0; i < days.length; i++){ if(i == 0){

cronExp.append(days[i]); } else{

cronExp.append(\ } }

//⽉份

cronExp.append(\" * \"); //周

cronExp.append(\"?\"); }

} else {

System.out.println(\"时或分或秒参数未配置\" );//时或分或秒参数未配置 }

return cronExp.toString(); } /** *

*⽅法摘要:⽣成计划的详细描述 *@param taskScheduleModel *@return String */

public static String createDescription(TaskScheduleModel taskScheduleModel){ StringBuffer description = new StringBuffer(\"\"); //计划执⾏开始时间

// Date startTime = taskScheduleModel.getScheduleStartTime();

if (null != taskScheduleModel.getSecond()

&& null != taskScheduleModel.getMinute() && null != taskScheduleModel.getHour()) { //按每天

if(taskScheduleModel.getJobType().intValue() == 1){ description.append(\"每天\");

description.append(taskScheduleModel.getHour()).append(\"时\"); description.append(taskScheduleModel.getMinute()).append(\"分\"); description.append(taskScheduleModel.getSecond()).append(\"秒\"); description.append(\"执⾏\"); }

//按每周

else if(taskScheduleModel.getJobType().intValue() == 3){

if(taskScheduleModel.getDayOfWeeks() != null && taskScheduleModel.getDayOfWeeks().length > 0) { String days = \"\";

for(int i : taskScheduleModel.getDayOfWeeks()) { days += \"周\" + i; }

description.append(\"每周的\").append(days).append(\" \"); }

if (null != taskScheduleModel.getSecond()

&& null != taskScheduleModel.getMinute() && null != taskScheduleModel.getHour()) { description.append(\

description.append(taskScheduleModel.getHour()).append(\"时\"); description.append(taskScheduleModel.getMinute()).append(\"分\"); description.append(taskScheduleModel.getSecond()).append(\"秒\"); }

description.append(\"执⾏\"); }

//按每⽉

else if(taskScheduleModel.getJobType().intValue() == 2){ //选择⽉份

if(taskScheduleModel.getDayOfMonths() != null && taskScheduleModel.getDayOfMonths().length > 0) { String days = \"\";

for(int i : taskScheduleModel.getDayOfMonths()) { days += i + \"号\"; }

description.append(\"每⽉的\").append(days).append(\" \"); }

description.append(taskScheduleModel.getHour()).append(\"时\"); description.append(taskScheduleModel.getMinute()).append(\"分\"); description.append(taskScheduleModel.getSecond()).append(\"秒\"); description.append(\"执⾏\"); } }

return description.toString(); }

//参考例⼦

public static void main(String[] args) { //执⾏时间:每天的12时12分12秒 start

TaskScheduleModel taskScheduleModel = new TaskScheduleModel(); taskScheduleModel.setJobType(1);//按每天 Integer hour = 12; //时 Integer minute = 12; //分 Integer second = 12; //秒

taskScheduleModel.setHour(hour); taskScheduleModel.setMinute(minute); taskScheduleModel.setSecond(second);

String cropExp = createCronExpression(taskScheduleModel);

System.out.println(cropExp + \":\" + createDescription(taskScheduleModel)); //执⾏时间:每天的12时12分12秒 end

taskScheduleModel.setJobType(3);//每周的哪⼏天执⾏ Integer[] dayOfWeeks = new Integer[3]; dayOfWeeks[0] = 1; dayOfWeeks[1] = 2; dayOfWeeks[2] = 3;

taskScheduleModel.setDayOfWeeks(dayOfWeeks); cropExp = createCronExpression(taskScheduleModel);

System.out.println(cropExp + \":\" + createDescription(taskScheduleModel));

taskScheduleModel.setJobType(2);//每⽉的哪⼏天执⾏ Integer[] dayOfMonths = new Integer[3]; dayOfMonths[0] = 1; dayOfMonths[1] = 21; dayOfMonths[2] = 13;

taskScheduleModel.setDayOfMonths(dayOfMonths); cropExp = createCronExpression(taskScheduleModel);

System.out.println(cropExp + \":\" + createDescription(taskScheduleModel)); } }

  

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务