Javascript 如何添加天数以从当前日期获取下一个日期(无周末)
我想增加一些天数来获得未来的日期。周末不应该包括在这里面。我怎么能得到这个 var startdate=“2012年6月8日”; 添加天数=10天; 结束日期应为“2012年6月22日”尝试以下方法: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 = "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));
}
}