Javascript 如何添加天数以从当前日期获取下一个日期(无周末)

Javascript 如何添加天数以从当前日期获取下一个日期(无周末),javascript,jquery,Javascript,Jquery,我想增加一些天数来获得未来的日期。周末不应该包括在这里面。我怎么能得到这个 var startdate=“2012年6月8日”; 添加天数=10天; 结束日期应为“2012年6月22日”尝试以下方法: var startDate = "8-June-2012"; startDate = new Date(startDate.replace(/-/g, "/")); var endDate = "", noOfDaysToAdd = 10, count = 0; wh

我想增加一些天数来获得未来的日期。周末不应该包括在这里面。我怎么能得到这个

var startdate=“2012年6月8日”; 添加天数=10天; 结束日期应为“2012年6月22日”

尝试以下方法:

   var startDate = "8-June-2012";
    startDate = new Date(startDate.replace(/-/g, "/"));
    var endDate = "", noOfDaysToAdd = 10, count = 0;
    while(count < noOfDaysToAdd){
        endDate = new Date(startDate.setDate(startDate.getDate() + 1));
        if(endDate.getDay() != 0 && endDate.getDay() != 6){
           //Date.getDay() gives weekday starting from 0(Sunday) to 6(Saturday)
           count++;
        }
    }
var startDate=“2012年6月8日”;
startDate=新日期(startDate.replace(/-/g,“/”);
var endDate=“”,noOfDaysToAdd=10,count=0;
while(计数
以下是函数calculateWorkingDayNumbers(startDate,offset) { var startDay=startDate.getDay(); 如果((开始日期%7)==1) { 返回((偏移量-(偏移量%7))/7)+((偏移量%7==1)?(1):(0)); } 否则如果(偏移量<7) { 如果((开始日期===6)) 返回1+((偏移量>0)?(1):(0)); 否则如果(开始日期===0) 返回1+((偏移量===6)?(1):(0)); } 其他的 { 返回CalculateWorkingDayNumber(startDate,((startDay%7)+1)%7))+CalculateWorkDayNumber(startDate.setDate(startDate.getDate()+((startDay%7)+1)%7)),偏移量-((startDay%7)+1)%7); } }
这段(未经测试的)代码非常快。您还可以通过处理假期来改进您的解决方案。

我认为您至少需要提供一个您正在谈论的示例。这个问题模糊不清,令人费解。setDate()和getDate()在1-31月的那一天起作用。如果你是在月底的话,这并不能保证有效,因为递增不会一直持续到下个月,它只会持续到下个月32@nbrooks:事实上,它可以包裹。@thg435哦,真的吗?谢谢你,我从来不知道。我记得过去我试过,但没有成功,但我想那是我的错。很高兴知道,谢谢
function calculateWorkingDayNumbers(startDate, offset)
{
    var startDay = startDate.getDay();
    if ((startDay % 7) === 1)
    {
        return ((offset - (offset % 7)) / 7) + ((offset % 7 === 1) ? (1) : (0));
    }
    else if (offset < 7)
    {
        if ((startDay === 6))
            return 1 + ((offset > 0) ? (1) : (0));
        else if (startDay === 0)
            return 1 + ((offset === 6) ? (1) : (0));
    }
    else
    {
        return calculateWorkingDayNumbers(startDate, (((startDay % 7) + 1) % 7)) + calculateWorkingDayNumbers(startDate.setDate(startDate.getDate() + (((startDay % 7) + 1) % 7)), offset - (((startDay % 7) + 1) % 7));
    }
}