import java.util.Date; public class TaskScheduleModel { /** * 所选作业类型: * 0 -> 某个时间点 * 1 -> 每天 * 2 -> 每月 * 3 -> 每周 * 4 ->间隔(每隔2个小时,每隔30分钟) */ Integer jobType; /** * 一周的哪几天 */ Integer[] dayOfWeeks; /** * 一个月的哪几天 */ Integer[] dayOfMonths; /** * 秒 */ Integer second; /** * 分 */ Integer minute; /** * 时 */ Integer hour; /** * 具体时间点 */ Date date; 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; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } }
import java.text.SimpleDateFormat; import java.util.Date; /** * @author * @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秒执行 * @date */ public class CronUtils { public String getCron(Date date) { String dateFormat = "ss mm HH dd MM ? yyyy"; SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); String formatTimeStr = null; if (date != null) { formatTimeStr = sdf.format(date); } return formatTimeStr; } /** * 方法摘要:构建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(",").append(weeks[i]); } } } //按每月 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(",").append(days[i]); } } //月份 cronExp.append(" * "); //周 cronExp.append("?"); } } else { if (taskScheduleModel.getJobType().intValue() == 0 && taskScheduleModel.getDate() != null) { String dateFormat = "ss mm HH dd MM ? yyyy"; SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); if (taskScheduleModel.getDate() != null) { cronExp.append(sdf.format(taskScheduleModel.getDate())); } } 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) { TaskScheduleModel taskScheduleModel = new TaskScheduleModel(); taskScheduleModel.setJobType(0);//某个时间 taskScheduleModel.setDate(new Date()); System.out.println(createCronExpression(taskScheduleModel)); //执行时间:每天的12时12分12秒 start 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)); } }
相关推荐
Java根据时间戳生成cron表达式,可传入时间范围灵活实现Cron基于日历形式的任务调度时间点,简单简洁,互用性强,可以灵活改动。
Cron表达式生成器java版(需要jdk1.8)亲测好用!
Cron Expressions——Cron 表达式 按顺序依次为 秒(0~59) 分钟(0~59) 小时(0~23) 天(月)(0~31,但是你需要考虑你月的天数) 月(0~11) 天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,...
Cron表达式写好了,不知道是否正确,如果执行间隔很长,根本没法测试,这个工具可以帮助你,他能输出所有的执行时间,你只需自己调整...提醒:目前常用的两个Cron表达式在线生成网站所提供的近期执行日期不准,不准。
用java编写的生成cron表达式工具类,支持生成各种cron表达式,共10个方法,且支持参数定制化和输出格式定制化,下载后不满意找我
这可能是网上最完整的Cron表达式解析翻译方法。 JavaScript版-解释翻译Cron表达式(代码奉上)。 此方法分为JavaScript版和Java版本,有需要的朋友请根据自己需要下载。 希望我写的方法有帮助到你,不足之处请多多...
cmd中运行 ”javar -jar 文件名 “ ,生成可视化窗口,方便 生成和解析Cron;从此怕忘记,再也不求人。
Cron表达式生成器,可反向解析,直接java -jar CronExpBuilder.jar 使用
Cron表达式生成工具
Quartz定时器在使用时,需要Cron表达式,但是人为去写需要对表达式的规则足够了解,但有了该表达式生成器只需要选择对应的“执行”时间就可以快速生成符合你要求的表达式啦。
定时任务cron表达式生成工具。
比较方便的Cron表达式生成器,全面的时间选择,支持Cron解析。
计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思
quartz的cron表达式生成工具,quartz的cron表达式生成工具,解压后运行jar包即可
自己幸幸苦苦扣出来的,还望好评。程序猿何必为难程序猿
spring定时器cron表达式生成
cron转化工具,转用于定时调度器时间转化使用
quartz定时调度表达式生成
quartz时间配置表达式生成工具,通界面配置生成表达式