如何添加工作日到目前为止?

时间:2016-02-10 18:16:41

标签: javascript datetime

以下代码是否适用于在所有可能情况下添加工作日? 例如,如果我在“星期四”添加4天,结果应该是“星期三”。

我想在某一天之后获得第n个工作日(工作日)。

var addOneDay=function(date) {
    var result = new Date(date.getTime());
    result.setDate(result.getDate() + 1);
    return result;
};

var addWeekDays = function(date,days) {
    var result = new Date(date.getTime());
    for (var i = 0; i < days; i++) {
        do{
            result = addOneDay(result);
        }while( result.getDay()=== 6 || result.getDay()=== 0);
    };
    return result;
};

var date = new Date(2016,1,18);
console.log(addWeekDays(date,4));

根据ElenaDBA和Felix Kling的建议重新编写代码:

var addWeekDays = function(date,days) {
    var result = new Date(date.getTime());
    for (var i = 0; i < days; i++) {
        result.setDate(result.getDate() + 1);
        if (result.getDay()=== 6 || result.getDay()=== 0) i--;
    };
    return result;
};

var date = new Date(2016,1,18);
console.log(addWeekDays(date,4));

1 个答案:

答案 0 :(得分:0)

这样的事情怎么样?

 var addOneDay = function (date) {
            var result = new Date(date.getTime());
            result.setDate(result.getDate() + 1);
            return result;
        };

        var addWeekDays = function (date, days) {
            var result = new Date(date.getTime());
            var counter = 1;
            while(counter <= days) {
                if (result.getDay() !== 6 && result.getDay() !== 0) {
                    counter = counter +1;
                }
                result = addOneDay(result);                  
            };
            return result;
        };

        var date = new Date(2016, 1, 18);
        console.log(addWeekDays(date, 4));

在这种情况下,输入日期为2016年2月18日,输出为2016年2月24日,就像您想要的那样