<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>加班计算器</title>
</head>
<body>
<textarea cols="10" rows="35" id="startTime" placeholder="上班时间">8:38:32</textarea>
<textarea cols="10" rows="35" id="endTime" placeholder="下班时间">20:17:07</textarea>
<button id="btn" onclick="dowork()">计算</button>
<textarea cols="50" rows="10" id="res" placeholder=""></textarea>
</body>
<!-- 内网,只能上某些网站,所以用gitpage的jQuery -->
<script src="https://huangjiaxin8.github.io/js/jquery-1.11.1.min.js"></script>
<script>
function dowork() {
console.log("btn click!");
var startTime = $("#startTime").val();
var endTime = $("#endTime").val();
var startTimeList = startTime.split("\n");
var endTimeList = endTime.split("\n");
console.log(startTimeList);
console.log(endTimeList);
startTimeList = replaceBlankList(startTimeList);
endTimeList = replaceBlankList(endTimeList);
var res = computeAll(startTimeList, endTimeList);
$("#res").val(res);
}
function replaceBlankList(list) {
var arr = [];
for (const li of list) {
if (li.trim() != '') {
console.log(li)
arr.push(li);
}
}
return arr;
}
function computeAll(startTimeList, endTimeList) {
var n = startTimeList.length;
var allMinute = 0;
for (var i = 0; i < n; i++) {
var s = startTimeList[i].trim();
var e = endTimeList[i].trim();
allMinute += computeOneDay(s, e);
}
var mustHour = 8 * n;
var mustMinute = 8 * 60 * n;
console.log(allMinute)
var h = Math.floor(allMinute / 60);
var m = Math.floor(allMinute % 60);
var jiabanAllMinute = allMinute - mustMinute;
var jiabanh = Math.floor(jiabanAllMinute / 60);
var jiabanm = Math.floor(jiabanAllMinute % 60);
if (allMinute >= mustMinute) {
return "你本月已经上了:" + n + "天,总共工时:" + h + "小时" + m + "分钟,正常工时:8 * " + n + " = " + mustHour + "。当前加班时间为:" + jiabanAllMinute + " 分钟,即:" + jiabanh + "时" + jiabanm + "分钟。";
} else {
return "你本月已经上了" + n + "天,总共工时" + h + "小时" + m + "分钟,正常工时:8*" + n + "=" + mustHour + "。缺工:" + (mustMinute - allMinute) + "分钟。";
console.log(mustMinute - allMinute);
}
}
function computeOneDay(s, e) {
var dateTimePrefix = "2020/01/01 ";
var minBeginTime = new Date("2020/01/01 08:00:00");
var dinnerTimeFirst = new Date("2020/01/01 17:30:00");
var dinnerTimeSecond = new Date("2020/01/01 18:00:00");
var launchTimeFirst = new Date("2020/01/01 12:00:00");
var launchTimeSencond = new Date("2020/01/01 13:30:00");
var dateBegin = new Date(dateTimePrefix + s);
var dateEnd = new Date(dateTimePrefix + e);
if (minBeginTime.getTime() > dateBegin.getTime()) {
dateBegin = minBeginTime;
}
var allmin = workMiniute(dateBegin, dateEnd);
if (dateEnd.getTime() > dinnerTimeSecond.getTime()) {
return allmin - 90 - 30;
}
if(dateEnd.getTime() > dinnerTimeFirst.getTime() && dateEnd.getTime() < dinnerTimeSecond.getTime()){
allmin = workMiniute(dateBegin, dinnerTimeFirst);
return allmin - 90;
}
if(dateEnd.getTime() > launchTimeFirst.getTime() && dateEnd.getTime() < launchTimeSencond.getTime()){
allmin = workMiniute(dateBegin, launchTimeFirst);
return allmin;
}
return allmin;
}
function workMiniute(dateBegin, dateEnd) {
var dateDiff = dateEnd.getTime() - dateBegin.getTime();
return Math.floor(dateDiff / 1000 / 60);
}
</script>
</html>