用js计算请假天数,假如上班时间为8:45,下班时间为17:30,中午休息时间为11:45-13:30,请假开始时间为2023-05-31 7:30:00结束时间为2023-06-02 15:30:00的代码
时间: 2024-02-24 10:57:48 浏览: 71
好的,以下是用 JavaScript 计算请假天数的代码。
```js
function calculateLeaveDays(startDateTime, endDateTime) {
const workStartTime = moment("8:45", "HH:mm");
const workEndTime = moment("17:30", "HH:mm");
const lunchStartTime = moment("11:45", "HH:mm");
const lunchEndTime = moment("13:30", "HH:mm");
const totalDays = moment(endDateTime).diff(moment(startDateTime), "days") + 1;
let leaveDays = 0;
for (let i = 0; i < totalDays; i++) {
const currentDateTime = moment(startDateTime).add(i, "days");
if (
currentDateTime.isBetween(
moment(workStartTime),
moment(lunchStartTime),
"minute",
"[)"
)
) {
leaveDays += 0.5;
} else if (
currentDateTime.isBetween(
moment(lunchEndTime),
moment(workEndTime),
"minute",
"(]"
)
) {
leaveDays += 0.5;
} else if (currentDateTime.isoWeekday() >= 6) {
leaveDays += 0;
} else {
leaveDays += 1;
}
}
return leaveDays;
}
const startDateTime = "2023-05-31 7:30:00";
const endDateTime = "2023-06-02 15:30:00";
const leaveDays = calculateLeaveDays(startDateTime, endDateTime);
console.log(`请假天数为${leaveDays}天`);
```
这段代码与用 Vue 计算请假天数的代码类似,但是去掉了模板和组件的相关代码,只保留了 `calculateLeaveDays` 方法的实现。我们也使用了 Moment.js 库来处理日期时间的计算和格式化。
需要注意的是,这段代码假设周六周日是双休日,不需要计算请假天数。如果你的公司的双休日不是周六周日,需要对代码进行相应的修改。
阅读全文