var dayJsonObj = { "MON": "星期一", "TUE": "星期二", "WED": "星期三", "THU": "星期四", "FRI": "星期五", "SAT": "星期六", "SUN": "星期日" } //对应关系 var posRelationshipJson = { "0": "seconds", "1": "minutes", "2": "hours", "3": "days", "4": "months", "5": "week", "6": "year" } //对应关系CN var posRelationshipJson_CN = { "0": "秒", "1": "分", "2": "时", "3": "日", "4": "月", "5": "周", "6": "年" } //步进方式*对应值 var gangVJson = { "0": "0", "1": "0", "2": "0", "3": "1", "4": "1", "5": "星期天", "6": "1970" } //表达式 //{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)} var cronExpressionJson = { "seconds": "", "minutes": "", "hours": "", "days": "", "months": "", "week": "", "year": "" } function parseCronExpression(cron) { //记录返回时间 var fxtime = ""; //按空格进行分割 var cronArray = cron.split(" "); //获得个数 var cronArrayLength = cronArray.length; //对全局变量json 进行赋值操作 if (cronArrayLength == 6 || cronArrayLength == 7) { for (var i = 0; i < cronArrayLength; i++) { var v = cronArray[i]; cronExpressionJson[posRelationshipJson[i]] = v; } } else { fxtime = "illegal Time!"; } fxtime = excuteOperate(cronArrayLength); //全局变量json内容初始化 jsonInit(cronArrayLength); return fxtime; } //remove global jsonvalue function jsonInit(cl) { for (var i = 0; i < cl; i++) { cronExpressionJson[posRelationshipJson[i]] = ""; } } //opereting parse function excuteOperate(cl) { var str = ""; for (var i = cl - 1; i >= 0; i--) { var v = cronExpressionJson[posRelationshipJson[i]]; var dw = posRelationshipJson_CN[i]; var fh = gangVJson[i]; if (v.indexOf("*") != -1) { str += "每" + dw; } else if (v.indexOf(",") != -1) { str += +v + dw; } else if (v.indexOf("-") != -1) { str += +v + dw; } else if (v.indexOf("/") != -1) { var left = v.split("/")[0]; var right = v.split("/")[1]; if (left == "*") { if (dw == "周") { str += "从" + fh + "开始,每隔" + right + "天"; } else { str += "从" + fh + dw + "开始,每隔" + right + dw; } } else { if (dw == "周") { str += "从" + dayJsonObj[left] + "开始,每隔" + right + "天"; } else { str += "从" + left + dw + "开始,每隔" + right + dw; } } } else if (v.indexOf("?") != -1) { } else if (v.indexOf("L") != -1) { if (dw == "周") { //1L 是星期6 2L是下个礼拜星期天,3L是下下哥礼拜星期1 L=7 } else { str += "当月最后一天" } } else if (v.indexOf("W") != -1) { } else if (v.indexOf("#") != -1) { } else if (v.indexOf("C") != -1) { } else { if (dw == "周") { str += dayJsonObj[v.toUpperCase()]+"||" } else { str += v + dw; } } } return str; }
quartz 调度表达式 js解析。常规使用足够。。W # C 表达式暂不支持。
最新推荐文章于 2019-10-26 19:29:13 发布