我使用以下代码将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
答案 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
添加必要的天数,直到您到达周末开始(记得使用%7检查)。从X中减去。必要时终止。
添加7 *(X / 5)天,从X减去5 *(X / 5)。请注意,我依赖整数除法。
添加X的剩余值(如果有)。