quartz 调度表达式 js解析。常规使用足够。。W # C 表达式暂不支持。

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值