Javascript 向日期添加天数时,如何检查是星期六还是星期天
我使用以下代码将X天数添加到今天的日期。在添加天数时,如果遇到周六或周日,我需要跳过它。例如,如果今天是2016年7月7日(星期四),我加上5天,通常是2016年7月12日(星期二),在这种情况下,我需要跳过周六和周日,因此加上5天就是2016年7月14日(星期四)。下面是添加X天数的代码,X是NumDays。我想我需要在这行中添加一个FOR循环:NewDate.setDate(NewDate.getDate()+parseFloat(NumDays));并检查它是否落在sat或sun上,如果是,跳过它,但在尝试找出它时遇到困难。有人做过这样的事吗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上,如果是
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天
@芭丝谢芭的答案要有效得多,但如果你想增加少量的天数,而不是跨越大量的日期,那么以后可能更容易理解和维护:
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;-)