Javascript 第二天起床,跳过周末

Javascript 第二天起床,跳过周末,javascript,date,datetime,weekday,Javascript,Date,Datetime,Weekday,我想使用JavaScript生成下一个工作日 这是我现在的代码 var today = new Date(); today.setDate(today.getDate()); var tdd = today.getDate(); var tmm = today.getMonth()+1; var tyyyy = today.getYear(); var date = new Date(); date.setDate(date.getDate()

我想使用JavaScript生成下一个工作日

这是我现在的代码

var today = new Date();
    today.setDate(today.getDate());
    var tdd = today.getDate();
    var tmm = today.getMonth()+1;
    var tyyyy = today.getYear();

    var date = new Date();

    date.setDate(date.getDate()+3);

问题是,周五返回周六的日期,而我希望它是周一,这将选择下一个工作日

var today=新日期(2016年7月26日、12日、0日、0日、0日);//星期五中午
log(“今天,星期一”,今天,“day#”+today.getDay());
var next=新日期(today.getTime());
next.setDate(next.getDate()+1);//明天
而(next.getDay()==6 | | next.getDay()==0)next.setDate(next.getDate()+1);
log(“无更改”,next,“day#”+next.getDay());
console.log(“----”);
//或者没有循环:
函数getNextWork(d){
d、 setDate(d.getDate()+1);//明天
如果(d.getDay()==0)d.setDate(d.getDate()+1);
否则,如果(d.getDay()==6)d.setDate(d.getDate()+2);
返回d;
}
next=getNextWork(今天);//星期五
console.log(“今天,星期五”,今天);
日志(“下一个,星期一”,下一个);
console.log(“----”);
今天=新日期(2016,7,29,12,0,0,0);//星期一中午
next=getNextWork(今天);//还是星期一中午
console.log(“今天,星期一”,今天);
console.log(“无更改”,下一步);
console.log(“----”);
//执行Rob的评论
函数getNextWork1(d){
var day=d.getDay(),add=1;
如果(天===5)加上=3;
否则,如果(天===6)加上=2;
d、 设置日期(d.getDate()+添加);
返回d;
}
今天=新日期(2016,7,26,12,0,0,0,0);//星期五中午
next=getNextWork1(今天);//星期五
console.log(“今天,星期五”,今天);
日志(“下一个,星期一”,下一个);
console.log(“----”);
今天=新日期(2016,7,26,12,0,0,0,0);//星期一中午
next=getNextWork1(今天);//星期一
console.log(“今天,星期一”,今天);

console.log(“无更改”,下一步)您可以一次添加一天,直到您到达非周六或周日的一天:

函数getNextBusinessDay(日期){
//复制日期,以免影响原始日期
日期=新日期(+日期);
//再加上几天,直到不坐或不晒太阳
做{
date.setDate(date.getDate()+1);
}而(!(date.getDay()%6))
返回日期;
}
//今天,2016年8月26日,星期五
[新日期(),新日期(2016,7,26)]forEach(职能(d){
log(d.tolocalString()+':'+getNextBusinessDay(d.tolocalString());
});请查看以下内容:


接受的答案将一次跳过一天,这回答了OPs问题,但对于希望添加可变天数但仍跳过周末的人,以下功能可能会有所帮助:

function addWorkDays(date, days) {   
  while (days > 0) {
    date.setDate(date.getDate() + 1);
    if (date.getDay() != 0 && date.getDay() != 6) {
      days -= 1;
    }
  }          
  return date;
}

查看当天(
today.getDay()
),如果是5(星期五)添加3,如果是6(星期六)添加2,否则添加1。添加一条if语句,说明如果一周中的
日期是星期六,则再添加两天。添加另一个if语句来检查周日。实际上,你的评论似乎是一个更好的主意:)这是一个很好的方法!代码只是有一些问题。例如:如果我们使用2016年12月31日,日期跳到2月2日,而不是2017年1月2日-需要处理数月和数年的边界。新年有问题(12月31日->2月1日)
function addWorkDays(date, days) {   
  while (days > 0) {
    date.setDate(date.getDate() + 1);
    if (date.getDay() != 0 && date.getDay() != 6) {
      days -= 1;
    }
  }          
  return date;
}