Javascript 向日期添加天数时,如何检查是星期六还是星期天

Javascript 向日期添加天数时,如何检查是星期六还是星期天,javascript,date,Javascript,Date,我使用以下代码将X天数添加到今天的日期。在添加天数时,如果遇到周六或周日,我需要跳过它。例如,如果今天是2016年7月7日(星期四),我加上5天,通常是2016年7月12日(星期二),在这种情况下,我需要跳过周六和周日,因此加上5天就是2016年7月14日(星期四)。下面是添加X天数的代码,X是NumDays。我想我需要在这行中添加一个FOR循环:NewDate.setDate(NewDate.getDate()+parseFloat(NumDays));并检查它是否落在sat或sun上,如果是

我使用以下代码将X天数添加到今天的日期。在添加天数时,如果遇到周六或周日,我需要跳过它。例如,如果今天是2016年7月7日(星期四),我加上5天,通常是2016年7月12日(星期二),在这种情况下,我需要跳过周六和周日,因此加上5天就是2016年7月14日(星期四)。下面是添加X天数的代码,X是NumDays。我想我需要在这行中添加一个FOR循环:NewDate.setDate(NewDate.getDate()+parseFloat(NumDays));并检查它是否落在sat或sun上,如果是,跳过它,但在尝试找出它时遇到困难。有人做过这样的事吗

var date = new Date(today);
    var NewDate = new Date(date);

    var NumDays = globals().XML.selectSingleNode("//_GetRSNumberOfDays/NumberOfDays").text;

    NewDate.setDate(NewDate.getDate() + parseFloat(NumDays));

    switch(NewDate.getDay())
    {
        case 6: 
            NewDate.setDate(NewDate.getDate() + 2);
        break;

        case 0:
            NewDate.setDate(NewDate.getDate() + 1);
        break; 
    }

    var dd = NewDate.getDate();
    var mm = NewDate.getMonth() + 1;
    var y = NewDate.getFullYear();

    var someFormattedDate = y + "/" + mm + "/" + dd

这会带来很多问题,如果你能巧妙地处理它,你可以在不断复杂的情况下得到解决方案(即不要使用循环):

基本上,您可以在日期序列号上使用%7来标识一周中的哪一天

然后分三步进行,总共X天

  • 添加必要的天数,直到周末开始(记住使用%7复选框)。从X中减去。必要时终止

  • 加上7*(X/5)天,从X中减去5*(X/5)。注意,我在这里依赖整数除法

  • 加上剩余的X值(如果有)


  • @芭丝谢芭的答案要有效得多,但如果你想增加少量的天数,而不是跨越大量的日期,那么以后可能更容易理解和维护:

    function addDays(date, howMany) {
        var date = new Date(date);  // copy off
        var skip = [0, 6]
        while (howMany-- > 0) {
            date.setDate(date.getDate() + 1);   // add a day
            while (skip.indexOf(date.getDay()) > -1) {  // if we're on a skip day, keep on adding
                date.setDate(date.getDate() + 1);
            }
        }
        return date
    }
    

    在date对象上使用
    .getUTCDay()
    :事实上,您的想法更易于实现,这一点可以从您花费时间来实现这一点得到证明。加一。(虽然我很想看看有多少-->0;-)