在日期中添加若干天时,如何检查是星期六还是星期日

时间:2016-07-07 13:16:27

标签: javascript date

我使用以下代码将X天数添加到今天的日期。在添加天数时,如果遇到星期六或星期日,我需要跳过它。例如,如果今天是2016年7月7日(星期四),我正在增加5天,通常是2016年12月7日(星期二),在这种情况下,我需要跳过周六和周日,所以添加5天将是2016年7月14日(星期四)。这是添加X天数的代码,X是NumDays。我想我需要在该行周围添加一个FOR循环:NewDate.setDate(NewDate.getDate()+ parseFloat(NumDays));并检查它是否落在坐着或太阳上,如果是,请跳过它,但无法弄清楚它。有人做过这样的事吗?

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

2 个答案:

答案 0 :(得分:1)

@ Bathsheba的回答更有效率,但是如果你想要增加少量的日子,而不是大量的日期,那么以后可能更容易理解和维护:

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
}

答案 1 :(得分:0)

这出现了很多,如果你巧妙地处理它(例如使用循环),你可以不断复杂地解决问题:

基本上,您可以在日期序列号上使用%7来标识星期几。

然后分三个步骤进行,总天数X

  1. 添加必要的天数,直到您到达周末开始(记得使用%7检查)。从X中减去。必要时终止。

  2. 添加7 *(X / 5)天,从X减去5 *(X / 5)。请注意,我依赖整数除法。

  3. 添加X的剩余值(如果有)。