<%@ page language="java" contentType="text/html; charset=utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Insert title here</title> <link rel="stylesheet" type="text/css" href="css/demo.css"> <link rel="stylesheet" type="text/css" href="themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="themes/icon.css"> <script type="text/javascript" src="jquery/jquery-1.7.2.min.js"></script> <script type="text/javascript" src="jquery/jquery.easyui.min.js"></script> <script type="text/javascript"> $(function(){ $('#dd').datebox({ required:true, formatter:function(date){ var y = date.getFullYear(); var m = date.getMonth()+1; var d = date.getDate(); return y+'-'+m+'-'+d; } }); }); </script> </head> <body> <div id="tt" class="easyui-tabs" style="width:500px;height:250px;"> <div title="Weekly" style="padding:20px;"> <form action="test.action" method="get"> <input type="hidden" name="everyWhat" value="weekly"> 星期一<input type="checkbox" name="dayOfWeek" value="2"> 星期二<input type="checkbox" name="dayOfWeek" value="3"> 星期三<input type="checkbox" name="dayOfWeek" value="4"> 星期四<input type="checkbox" name="dayOfWeek" value="5"><p> 星期五<input type="checkbox" name="dayOfWeek" value="6"> 星期六<input type="checkbox" name="dayOfWeek" value="7"> 星期日<input type="checkbox" name="dayOfWeek" value="1"><p> <%@include file="common.jsp" %> <input type="submit" name="提交"> </form> </div> <div title="Monthly" data-options="closable:true" style="overflow:auto;padding:20px;"> <form action="test.action" method="get"> <input type="hidden" name="everyWhat" value="monthly"> 选择第几个星期:<select name="week"> <option value="1">一</option> <option value="2">二</option> <option value="3">三</option> <option value="4">四</option> </select> <select name="dayOfWeek"> <option value="1">星期日</option> <option value="2">星期一</option> <option value="3">星期二</option> <option value="4">星期三</option> <option value="5">星期四</option> <option value="6">星期五</option> <option value="7">星期六</option> </select><p> <%@include file="common.jsp" %> <input type="submit" name="提交"> </form> </div> <div title="User Defined" data-options="closable:true" style="padding:20px;"> <form action="test.action" method="get"> <input type="hidden" name="everyWhat" value="userDefined"> 日期:<input id="dd" type="text" name="date"></input><p> <%@include file="common.jsp" %> <input type="submit" name="提交"> </form> </div> </div> </body> </html>
<%@ page language="java" contentType="text/html; charset=utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> </head> <body> 起始时间:<select name="hour"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> <option value="14">14</option> <option value="15">15</option> <option value="16">16</option> <option value="17">17</option> <option value="6">18</option> <option value="7">19</option> <option value="8">20</option> <option value="9">21</option> <option value="10">22</option> <option value="11">23</option> </select> <input type="text" name="minute" value="0" style="width:20px">分 <input type="text" name="second" value="0" style="width:20px">秒(0-59)<p> </body> </html>
package com.acca.util; /** * 页面设置转为UNIX cron expressions 转换类 CronExpConversion */ public class CronExpConversion { /** * 页面设置转为UNIX cron expressions 转换算法 * * @param everyWhat * @param commonNeeds 包括 second minute hour * @param monthlyNeeds 包括 第几个星期 星期几 * @param weeklyNeeds 包括 星期几 * @param userDefinedNeeds 包括具体时间点 * @return cron expression */ public static String convertDateToCronExp(String everyWhat, String[] commonNeeds, String[] monthlyNeeds, String weeklyNeeds, String userDefinedNeeds) { String cronEx = ""; String commons = commonNeeds[0] + " " + commonNeeds[1] + " " + commonNeeds[2] + " "; String dayOfWeek = ""; if ("monthly".equals(everyWhat)) { // eg.: 6#3 (day 6 = Friday and "#3" = the 3rd one in the // month) dayOfWeek = monthlyNeeds[1] + CronExRelated.specialCharacters.get(CronExRelated._THENTH) + monthlyNeeds[0]; cronEx = (commons + CronExRelated.specialCharacters.get(CronExRelated._ANY) + " " + CronExRelated.specialCharacters.get(CronExRelated._EVERY) + " " + dayOfWeek + " ") .trim(); } else if ("weekly".equals(everyWhat)) { dayOfWeek = weeklyNeeds; // 1 if (dayOfWeek != null) { cronEx = (commons + CronExRelated.specialCharacters.get(CronExRelated._ANY) + " " + CronExRelated.specialCharacters.get(CronExRelated._EVERY) + " " + dayOfWeek + " ").trim(); } else { cronEx = (commons + CronExRelated.specialCharacters.get(CronExRelated._ANY) + " " + CronExRelated.specialCharacters.get(CronExRelated._EVERY) + " " + CronExRelated.specialCharacters.get(CronExRelated._EVERY) + " ").trim(); } } else if ("userDefined".equals(everyWhat)) { String dayOfMonth = userDefinedNeeds.split("-")[2]; if (dayOfMonth.startsWith("0")) { dayOfMonth = dayOfMonth.replaceFirst("0", ""); } String month = userDefinedNeeds.split("-")[1]; if (month.startsWith("0")) { month = month.replaceFirst("0", ""); } String year = userDefinedNeeds.split("-")[0]; // FIXME 暂时不加年份 Quartz报错 /* * cronEx = (commons + dayOfMonth + " " + month + " " + * CronExRelated.specialCharacters.get(CronExRelated._ANY) + " " + year).trim(); */ cronEx = (commons + dayOfMonth + " " + month + " " + CronExRelated.specialCharacters.get(CronExRelated._ANY) + " ").trim(); } return cronEx; } }
package com.acca.util; import java.util.HashMap; import java.util.Map; /** * * 格式: [秒] [分] [小时] [日] [月] [周] [年] * * * @author zhouhua, 2013-1-18 */ @SuppressWarnings("unchecked") public class CronExRelated { public static final String _EVERY = "every"; public static final String _ANY = "any"; public static final String _RANGES = "ranges"; public static final String _INCREMENTS = "increments"; public static final String _ADDITIONAL = "additional"; public static final String _LAST = "last"; public static final String _WEEKDAY = "weekday"; public static final String _THENTH = "theNth"; public static final String _CALENDAR = "calendar"; public static final String _TYPE = "type"; /** * 0 0 6 ? * 1#1 ? monthly; 0 0 6 ? * 1 ? weekly; 0 0 6 30 7 ? 2006 useDefined */ static String[] headTitle = { "TYPE", "SECONDS", "MINUTES", "HOURS", "DAYOFMONTH", "MONTH", "DAYOFWEEK", "YEAR" }; /** * cron expression special characters Map specialCharacters */ public static Map specialCharacters; static { specialCharacters = new HashMap(10); specialCharacters.put(_EVERY, "*");//* 代表任意合法的字段 specialCharacters.put(_ANY, "?");//? 表示没值被指定 ,只能出现在月和星期的字段 specialCharacters.put(_RANGES, "-");//- 表示值的范围 specialCharacters.put(_INCREMENTS, "/");// / 表示时间的增量 specialCharacters.put(_ADDITIONAL, ",");//表示指定多个值,例如在周字段上设置 "MON,WED,FRI" 表示周一,周三和周五触发 specialCharacters.put(_LAST, "L");//L 如果用在"一月哪天"段上,表示一个月的最后一天;如果用在"星期"段上。表示一个星期的最后一天(星期六) specialCharacters.put(_WEEKDAY, "W");//W 表示最靠近给定时间的一天,(必须是星期一到星期五) specialCharacters.put(_THENTH, "#");//只能出现在"星期"段位置 ,表示第几个星期 specialCharacters.put(_CALENDAR, "C"); specialCharacters.put(_TYPE, headTitle); } public static void set(String ex, int index) { ((String[]) specialCharacters.get(_TYPE))[index] = ex; } }
/** * 测试格式转换 * @return */ public String test(){ String cronExpression = "" ; HttpServletRequest request=ServletActionContext.getRequest(); String[] commonNeeds = {request.getParameter("second"),request.getParameter("minute"),request.getParameter("hour")}; String[] monthlyNeeds={request.getParameter("week"),request.getParameter("dayOfWeek")}; String weeklyNeeds=(String) request.getParameter("dayOfWeek"); String userDefinedNeeds=request.getParameter("date"); String everyWhat=request.getParameter("everyWhat"); cronExpression=CronExpConversion.convertDateToCronExp(everyWhat, commonNeeds, monthlyNeeds, weeklyNeeds, userDefinedNeeds); System.out.println(cronExpression); return null; }
因为本人使用的是struts2测试类在struts。xml中的配置为 <action name="test" class="jobTaskAction" method="test"></action> 这个quartz时间规则转换还有一些没有完善的地方,例如当输入相应的时间规则后,只是简单的实现了后台打印,并没有实现在前台显示也没有实现保存到数据库中,当然这些并不是最重要的,重要的是,quartz时间规则转换的实现,大家可以根据自己项目的要求进行改进,希望改进后可以共享,谢谢大家。 给大家附上几张效果图看看
相关推荐
定时任务时间参数转换,cron表达式轻易转换,更易理解时间参数设置类型及转换含义
quartz 时间配置规则quartz 时间配置规则quartz 时间配置规则quartz 时间配置规则quartz 时间配置规则quartz 时间配置规则
SpringBoot整合quartz2.2.3使用自定义数据源,包括mysql和oracle,使用quartz配合websocket服务器向客户端主动通讯发起通讯。
spring mvc quartz 动态设置时间,可以实现任务调度的暂停和重启,在页面实现一个功能,可以动态设置调度的表达式,可以开启暂停任务调度
Quartz 线程池 中剥离出来的代码 不例子
基于quartz实现自定义时间的定时调度
使用quartz实现不重启服务器修改自定义配置。介绍见 http://blog.csdn.net/autfish/article/details/54583183
quartz 时间配置规则.doc
Spring+QuartZ集成 自定义注解!!! github 更新地址:https://github.com/JK945359/QuartZ
quartz时间配置表达式生成工具,通界面配置生成表达式
Spring Quartz如何动态配置时间
Quartz.net作业调度自定义定时执行任务多任务执行c#,定时执行任务,如超时取消订单,自动确认收货等等
NULL 博文链接:https://ait.iteye.com/blog/1981617
主要实现quartz的时间规则的动态配置以及动态开启和关闭
Spring + quartz 定时任务修改定时时间不重启服务
Quartz 的Cron时间设置
spring quartz 时间任务调度框架 spring quartz 时间任务调度框架 spring quartz 时间任务调度框架
下载导入就可以用,执行test类的main方法加载spring applicationContext.xml配置文件,启动Quartz定时器.修改spring配置文件的配置时间.详细看注释
quartz时间配置
文件里面包括 1:Quartz开发指南.pdf 2:Quartz从入门到进阶.pdf 3:QuartzBeginnerExample一个附带的工程例子 4:quartz-1.6.1.zip Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它...