UNPKG

wft-utils

Version:

The commonly used tool functions in daily development

253 lines (238 loc) 7.29 kB
export function translateCRONToChinese(cronValue) { if(!cronValue) return '' var temCrons = cronValue.split(" "); var sBuffer = ""; if (temCrons.length == 7) { //解析年 var years = temCrons[6]; sBuffer += analysisYears(years); } //解析月 var month = temCrons[4]; sBuffer += analysisMonth(month); //解析周和日 var week = temCrons[5]; var day = temCrons[3]; if ((week.indexOf("?") != -1 && day.indexOf("*") != -1) || (week.indexOf("*") != -1 && day.indexOf("?") != -1) || (week.indexOf("*") != -1 && day.indexOf("*") != -1) || (week.indexOf("?") != -1 && day.indexOf("?") != -1)) { sBuffer += "每天"; } else { if (week.indexOf("?") != -1) { //周位是"?",说明要解析日位 //解析日 sBuffer += analysisDay(day); } else if (day.indexOf("?") != -1) { week = translateWeek(week); //日位是"?",说明要解析周位 //解析周 sBuffer += analysisWeek(week); } } //解析时 var hours = temCrons[2]; sBuffer += analysiHours(hours); //解析分 var minutes = temCrons[1]; sBuffer += analysiMinutes(minutes); //解析秒 var seconds = temCrons[0]; sBuffer += analysiSeconds(seconds); if (sBuffer.length > 0) { sBuffer += " 执行"; } else { sBuffer += "表达式转换异常"; } return sBuffer; } function analysisYears(years) { var sBuffer = ""; if (years.indexOf("*") != -1) { sBuffer += "每年"; } else if (years.indexOf("-") != -1) { sBuffer += "从" + years.split("-")[0] + "年到" + years.split("-")[1] + "年"; } else if (years.indexOf("/") != -1) { sBuffer += "从" + years.split("/")[0] + "年开始每隔" + years.split("/")[1] + "年"; } else { sBuffer += "在" + years + "年"; } return sBuffer; } function analysisMonth(month) { var sBuffer = ""; if (month.indexOf("*") != -1) { sBuffer += "每月"; } else if (month.indexOf("-") != -1) { sBuffer += "从" + month.split("-")[0] + "月到" + month.split("-")[1] + "月"; } else if (month.indexOf("/") != -1) { sBuffer += "从" + month.split("/")[0] + "月开始每隔" + month.split("/")[1] + "个月"; } else { sBuffer += "在" + month + "月"; } return sBuffer; } function analysisDay(day) { var sBuffer = ""; if (day.indexOf("-") != -1 && day.indexOf("L") == -1) { sBuffer += "从" + day.split("-")[0] + "日至" + day.split("-")[1] + "日"; } else if (day.indexOf("/") != -1) { sBuffer += "从" + day.split("/")[0] + "日开始每隔" + day.split("/")[1] + "天"; } else if (day.indexOf("L") != -1) { if (day.indexOf("W") != -1) { sBuffer += "最后一个工作日"; } else if (day.indexOf("-") != -1) { sBuffer += "底前" + day.split("-")[1] + "天"; } else if (day.indexOf("-") == -1 && day.length > 2) { sBuffer += "最后一个" + translateWeekFromNumberToChinese(day.split("L")[0]); } else { sBuffer += "最后一天"; } } else if (day.indexOf("W") != -1) { sBuffer += "最近的工作日(周一到周五)" } else { sBuffer += "在" + day + "日"; } return sBuffer; } function analysisWeek(week) { var sBuffer = ""; if (week.indexOf("-") != -1) { sBuffer += "从" + week.split("-")[0] + "到" + week.split("-")[1] } else if (week.indexOf("/") != -1) { sBuffer += "从每隔" + week.split("/")[1] + "周的" + week.split("/")[0]; } else if (week.indexOf("#") != -1) { sBuffer += "在第" + week.split("#")[1] + "个" + translateWeekFromNumberToChinese(week.split("#")[0]); } else { sBuffer += "在" + week; } return sBuffer; } function analysiHours(hours) { var sBuffer = ""; if (hours.indexOf("*") != -1) { sBuffer += "每小时"; } else if (hours.indexOf("-") != -1) { sBuffer += "从" + hours.split("-")[0] + "点到" + hours.split("-")[1] + "点"; } else if (hours.indexOf("/") != -1) { sBuffer += "从" + hours.split("/")[0] + "点开始每隔" + hours.split("/")[1] + "小时"; } else { sBuffer += "在" + hours + "点"; } return sBuffer; } function analysiMinutes(minutes) { var sBuffer = ""; if (minutes.indexOf("*") != -1) { sBuffer += "每分钟"; } else if (minutes.indexOf("-") != -1) { sBuffer += "从第" + minutes.split("-")[0] + "分到" + minutes.split("-")[1] + "分"; } else if (minutes.indexOf("/") != -1) { sBuffer += "从第" + minutes.split("/")[0] + "分开始每隔" + minutes.split("/")[1] + "分钟"; } else { sBuffer += "在第" + minutes + "分"; } return sBuffer; } function analysiSeconds(seconds) { var sBuffer = ""; if (seconds.indexOf("*") != -1) { sBuffer += "每秒"; } else if (seconds.indexOf("-") != -1) { sBuffer += "从第" + seconds.split("-")[0] + "秒到" + seconds.split("-")[1] + "秒"; } else if (seconds.indexOf("/") != -1) { sBuffer += "从第" + seconds.split("/")[0] + "秒开始每隔" + seconds.split("/")[1] + "秒"; } else { sBuffer += "在第" + seconds + "秒"; } return sBuffer; } /** * 将周位的表达式转成中文 * @param {*} week */ function translateWeek(week) { // SUN,MON,TUE,WED,THU,FRI,SAT // 7 1 2 3 4 5 6 var regex = new RegExp(".*[a-zA-z].*"); var isString = regex.test(week); var weekChinese = ""; if (isString) { if (week.indexOf(",") != -1) { var tempWeek = week.split(","); for (var i = 0; i < tempWeek.length; i++) { if (i == (tempWeek.length - 1)) { weekChinese += translateWeekFromNumberToChinese(tempWeek[i]); } else { weekChinese += translateWeekFromNumberToChinese(tempWeek[i]) + ","; } } } } else { if (week.indexOf("/") != -1) { weekChinese += translateWeekFromNumberToChinese(week.split("/")[0]) + "/" + week.split("/")[1]; } else if ((week.indexOf("-") != -1)) { weekChinese += translateWeekFromNumberToChinese(week.split("-")[0]) + "-" + translateWeekFromNumberToChinese(week.split("-")[1]); } } if (weekChinese) { return weekChinese; } else { return week; } } /** * 将数字转化为中文星期几 * @param {*} val :1,2,3... */ function translateWeekFromNumberToChinese(val) { switch (val) { case "1": val = "星期日"; break; case "2": val = "星期一"; break; case "3": val = "星期二"; break; case "4": val = "星期三"; break; case "5": val = "星期四"; break; case "6": val = "星期五"; break; case "7": val = "星期六"; break; case "SUN": val = "星期日"; break; case "MON": val = "星期一"; break; case "TUE": val = "星期二"; break; case "WED": val = "星期三"; break; case "THU": val = "星期四"; break; case "FRI": val = "星期五"; break; case "SAT": val = "星期六"; break; default: break; } return val; }