Javascript 如何在省略周末的情况下增加日期对象小时数

Javascript 如何在省略周末的情况下增加日期对象小时数,javascript,date,javascript-objects,Javascript,Date,Javascript Objects,我正在用JavaScript使用Date对象制作一个截止日期计算器函数 我有输入的日期和周转时间,算法会在一个日期内返回截止日期。它现在可以正常工作了,但是当我增加date对象的周转时间足以开始新的一周时,它也包括周末。这破坏了我的整个算法,因为我不想把周末算作有效工作时间 我可以在Date对象上设置一个省略周末的日期吗?例如: 0 = "Sunday"; 1 = "Monday"; 2 = "Tuesday"; 3 = "Wednesday"; 4 = "Thursday"; 5 = "Fri

我正在用JavaScript使用Date对象制作一个截止日期计算器函数

我有输入的日期和周转时间,算法会在一个日期内返回截止日期。它现在可以正常工作了,但是当我增加date对象的周转时间足以开始新的一周时,它也包括周末。这破坏了我的整个算法,因为我不想把周末算作有效工作时间

我可以在Date对象上设置一个省略周末的日期吗?例如:

0 = "Sunday";
1 = "Monday";
2 = "Tuesday";
3 = "Wednesday";
4 = "Thursday";
5 = "Friday";
6 = "Saturday";

Thursday date + 24 hours => Friday date. But Friday date + 72 hours => Monday date
instead of Wednesday date.

如果不使用周末,我如何计算截止日期,因此,如果我给周五的日期留出72小时,我将不会得到周一,而是周三?就像Date对象将跳过周末一样。

好的,尝试遵循干净的代码概念,我将整个算法放入了separate函数中。我将介绍几个其他功能,主要部分包括以下内容:

function incrementWithTime(submit, days, hours_to_increment) {
    let date = new Date(submit);
    repeatThis(days) (() => date = pushToNextWeekIfReachedWeekend(new Date(date.getTime() + (24*1000*3600))));
    date = new Date(date.getTime() + (hours_to_increment*1000*3600));
    return date;
}
这会逐日递增日期对象。我们为什么需要这个?嗯,我必须知道时间间隔到达周末的位置,这样我就可以使用pushToNextWeekIfReachedWeekend方法“踩”上它并跳过:

现在,如果您想知道这是如何工作的:


可能是@Julian的复制品是的,我没有使用Moment.jsGood point,尽管建议使用Moment.js。我认为没有Moment.js很难做到这一点,为什么要重新发明轮子呢?没有库一点都不难,请参阅。你真的应该把你试过的东西贴出来。
function pushToNextWeekIfReachedWeekend(submit) {
    let date = new Date(submit);
    let day = date.getDay();
    const saturday = 6, sunday = 0;

if(day == saturday)
    date.setDate(date.getDate() + 2);    
if(day == sunday)
    date.setDate(date.getDate() + 1);
return date;
}
const repeatThis = x => f => {
    if (x > 0) {
        f();
        repeatThis(x - 1)(f);
    }
}