/** * @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(",").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 { 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)); } }
TaskScheduleModel:
public class TaskScheduleModel { /** * 所选作业类型: * 1 -> 每天 * 2 -> 每月 * 3 -> 每周 */ 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; } }
相关推荐
本项目提供的"Cron表达式生成器java版"是一个基于Java 1.8的工具,能够帮助开发者更方便地创建和理解复杂的cron表达式。 Cron表达式由7个子字段组成,每个字段之间用空格分隔,代表的含义分别是: 1. 秒(0-59) 2....
Java根据时间戳生成cron表达式,可传入时间范围灵活实现Cron基于日历形式的任务调度时间点,简单简洁,互用性强,可以灵活改动。
- **CronSequenceGenerator**: Spring提供的类,可以解析和生成Cron表达式。 **5. 安全性和最佳实践** 在实际应用中,要注意Cron表达式的安全问题,避免用户输入非法或过于频繁的表达式导致服务器资源被滥用。同时...
Cron Expressions——Cron 表达式 按顺序依次为 秒(0~59) 分钟(0~59) 小时(0~23) 天(月)(0~31,但是你需要考虑你月的天数) 月(0~11) 天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,...
这个描述中提到的"js cron表达式生成器"是一个专门用于创建和解析`cron`表达式的JavaScript工具,它能够帮助开发者轻松地配置复杂的定时任务规则。 `cron`表达式由6或7个字段组成,每个字段代表不同的时间单位:秒...
Cron表达式是一种在IT行业中广泛使用的定时任务调度工具,特别是在Java领域,如Quartz框架。Cron表达式由七个子表达式组成,用于定义一个时间模式,使得任务可以在特定的时间点执行。每个子表达式代表不同的时间单位...
"Cron表达式生成器html源码"可能包含HTML、CSS和JavaScript代码,HTML负责布局和交互,CSS用于样式控制,JavaScript则处理用户交互和逻辑计算,生成Cron表达式。 综上所述,Cron表达式生成器提供了一种直观的方式...
- `CalcRunTime.ashx.cs`: HTTP处理程序的后台代码,实现具体的功能逻辑,如解析用户输入、生成cron表达式等。 - `CronExpressionWeb.csproj`和`.csproj.user`:项目文件和用户配置文件,用于Visual Studio管理项目...
通过这个生成器,用户可以直观地设置任务执行的时间规则,并得到相应的Cron表达式,反之亦然,如果已经有了一个Cron表达式,该工具也能帮助解析其含义。 这个生成器的使用方式非常简单,只需要运行压缩包中的`...
cron表达式是Linux系统中用于设置周期性任务的工具,它是Cron Job的核心部分。这个“cron表达式自动生成”工具则...通过HTML和CSS的结合,这个工具提供了直观的交互方式,让非技术人员也能轻松理解并生成cron表达式。
Cron表达式是一种广泛用于计划任务调度的工具,它源于Unix系统,现在也被许多其他操作系统和编程语言支持,包括Java、Python、Node.js等。这种表达式定义了一种时间格式,用于描述周期性的任务执行时间。 Cron...
Cron生成表达式HTML源码是一个用于创建和理解Quartz任务调度中使用的Cron表达式的实用工具。Quartz是一款开源的作业调度框架,它允许在Java应用中安排和执行任务。Cron表达式是Quartz中一个核心的概念,用于定义定时...
用java编写的生成cron表达式工具类,支持生成各种cron表达式,共10个方法,且支持参数定制化和输出格式定制化,下载后不满意找我
Cron表达式写好了,不知道是否正确,如果执行间隔很长,根本没法测试,这个工具可以帮助你,他能输出所有的执行时间,你只需自己调整...提醒:目前常用的两个Cron表达式在线生成网站所提供的近期执行日期不准,不准。
在Java开发中,Cron表达式也经常被用于Spring框架的定时任务调度。这个"Cron表达式生成工具"可能是用来帮助开发者更加便捷地创建和理解这些复杂的表达式。 Cron表达式由6或7个由空格分隔的字段组成,每个字段代表...
标题提到的"quartz的cron表达式生成工具"是为了帮助开发者更方便地创建和理解复杂的Cron表达式。这个工具通常是一个图形用户界面(GUI)应用程序,它可以提供直观的方式来配置和生成符合Quartz框架所需的Cron表达式...
"Cron表达式"是Linux系统中计划任务的核心,而Java社区通过`@Scheduled`注解和Quartz库等方式也引入了类似的概念,使得在Java应用中实现定时任务变得非常方便。 "Cron"这个词来源于北欧神话中的时间之神"Cronus",...
这可能是网上最完整的Cron表达式解析翻译方法。 JavaScript版-解释翻译Cron表达式(代码奉上)。 此方法分为JavaScript版和Java版本,有需要的朋友请根据自己需要下载。 希望我写的方法有帮助到你,不足之处请多多...
cmd中运行 ”javar -jar 文件名 “ ,生成可视化窗口,方便 生成和解析Cron;从此怕忘记,再也不求人。