wft-utils
Version:
The commonly used tool functions in daily development
253 lines (238 loc) • 7.29 kB
JavaScript
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;
}