帮我写一个可以直接运行的html他是corn解析器请用js实现功能1输入6位格式的corn表达式对应秒、分、时、天、月、周点击输出可以输出5个最近会触发运行cron的具体日期格式类似2022-01-02 120201功能2用表格列出几个cron示例他也是6位格式的corn表达式对应秒、分、时、天、月、周分别是每秒每分每小时每天10点每周一10点还有每月1号会触发的cron表达式
<!DOCTYPE html>
<html>
<head>
<title>Cron解析器</title>
<script type="text/javascript">
function parseCron() {
var cron = document.getElementById("cron").value;
var cronArr = cron.split(" ");
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
var output = "";
var count = 0;
for(var i = 0; i < 5; i++) {
if(cronArr[i] == "*") {
cronArr[i] = "0-59";
}
if(cronArr[i].indexOf("/") != -1) {
var arr = cronArr[i].split("/");
var start = parseInt(arr[0]);
var step = parseInt(arr[1]);
cronArr[i] = start + "-" + (59 + start - step) + "/" + step;
}
if(cronArr[i].indexOf(",") != -1) {
var arr = cronArr[i].split(",");
var outputArr = [];
for(var j = 0; j < arr.length; j++) {
var num = parseInt(arr[j]);
if(num == hour && i == 2) {
num = num + 1;
}
if(num > 59 || (i == 3 && num > 31) || (i == 4 && num > 12) || (i == 5 && num > 7)) {
continue;
}
if(i == 0) {
outputArr.push(year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + num);
} else if(i == 1) {
outputArr.push(year + "-" + month + "-" + day + " " + hour + ":" + num + ":" + second);
} else if(i == 2) {
outputArr.push(year + "-" + month + "-" + day + " " + num + ":" + minute + ":" + second);
} else if(i == 3) {
outputArr.push(year + "-" + month + "-" + num + " " + hour + ":" + minute + ":" + second);
} else if(i == 4) {
outputArr.push(year + "-" + num + "-" + day + " " + hour + ":" + minute + ":" + second);
} else if(i == 5) {
var dayOfWeek = num - 1;
var diff = dayOfWeek - date.getDay();
if(diff < 0) {
diff = diff + 7;
}
var newDate = new Date(date.getTime() + (diff * 24 * 60 * 60 * 1000));
outputArr.push(newDate.getFullYear() + "-" + (newDate.getMonth() + 1) + "-" + newDate.getDate() + " " + hour + ":" + minute + ":" + second);
}
count++;
if(count >= 5) {
break;
}
}
output = output + outputArr.join(", ") + "\n";
} else {
var arr = cronArr[i].split("-");
var start = parseInt(arr[0]);
var end = parseInt(arr[1]);
if(i == 0) {
start = start - second;
end = end - second;
} else if(i == 1) {
start = start - minute;
end = end - minute;
} else if(i == 2) {
start = start - hour;
end = end - hour;
} else if(i == 3) {
start = start - day;
end = end - day;
} else if(i == 4) {
start = start - month;
end = end - month;
} else if(i == 5) {
start = start - 1;
end = end - 1;
}
if(start < 0) {
start = start + 60;
}
if(end < 0) {
end = end + 60;
}
var outputArr = [];
for(var j = start; j <= end; j++) {
if(j == hour && i == 2) {
j = j + 1;
}
if(j > 59 || (i == 3 && j > 31) || (i == 4 && j > 12) || (i == 5 && j > 7)) {
continue;
}
if(i == 0) {
outputArr.push(year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + j);
} else if(i == 1) {
outputArr.push(year + "-" + month + "-" + day + " " + hour + ":" + j + ":" + second);
} else if(i == 2) {
outputArr.push(year + "-" + month + "-" + day + " " + j + ":" + minute + ":" + second);
} else if(i == 3) {
outputArr.push(year + "-" + month + "-" + j + " " + hour + ":" + minute + ":" + second);
} else if(i == 4) {
outputArr.push(year + "-" + j + "-" + day + " " + hour + ":" + minute + ":" + second);
} else if(i == 5) {
var dayOfWeek = j - 1;
var diff = dayOfWeek - date.getDay();
if(diff < 0) {
diff = diff + 7;
}
var newDate = new Date(date.getTime() + (diff * 24 * 60 * 60 * 1000));
outputArr.push(newDate.getFullYear() + "-" + (newDate.getMonth() + 1) + "-" + newDate.getDate() + " " + hour + ":" + minute + ":" + second);
}
count++;
if(count >= 5) {
break;
}
}
output = output + outputArr.join(", ") + "\n";
}
}
document.getElementById("result").innerHTML = output;
}
</script>
</head>
<body>
<h1>Cron解析器</h1>
<h2>功能1:解析Cron表达式</h2>
<label for="cron">请输入6位格式的Cron表达式:</label>
<input type="text" id="cron" placeholder="秒 分 时 天 月 周">
<button type="button" onclick="parseCron()">输出</button>
<div id="result"></div>
<pre><code><h2>功能2:Cron示例</h2>
<table>
<tr>
<th>表达式</th>
<th>说明</th>
</tr>
<tr>
<td>*</td>
<td>每秒钟</td>
</tr>
<tr>
<td>*/1 * * * *</td>
<td>每分钟</td>
</tr>
<tr>
<td>0 */1 * * *</td>
<td>每小时</td>
</tr>
<tr>
<td>0 0 10 * *</td>
<td>每天10点</td>
</tr>
<tr>
<td>0 0 10 * MON</td>
<td>每周一10点</td>
</tr>
<tr>
<td>0 0 1 * *</td>
<td>每月1号</td>
</tr>
</table>
</code></pre>
</body>
</html>
原文地址: http://www.cveoy.top/t/topic/bpYJ 著作权归作者所有。请勿转载和采集!