从JavaScript工作日获取下一个日期

Гро*_*ный 15 javascript datetime weekday

如何返回给定工作日的下一个日期(可以是0-6号或者周日至周六的名字).

例如,如果今天,在2009年10月16日星期五, 我通过了:

  • 星期五,它将于2009年10月16日至今日返回
  • 星期六返回2009年10月17日
  • 周四将于2009年10月22 返回

Tim*_*Tim 29

只添加7并不能解决问题.

以下功能将为您提供一周的第二天.

function nextDay(x){
    var now = new Date();    
    now.setDate(now.getDate() + (x+(7-now.getDay())) % 7);
    return now;
}
Run Code Online (Sandbox Code Playgroud)

  • 对于好奇,这是如何工作:代码获取当月的当天(1-31)并添加今天的一天(0-6)和所需的一周之间的差异(0-6) ),然后使用mod来确保新值不超过6. (5认同)

小智 16

以下是蒂姆回答解决具体问题的一个略微修改的版本 - 传递日期d,以及所需的星期几(道具0-6),返回日期

function nextDay(d, dow){
    d.setDate(d.getDate() + (dow+(7-d.getDay())) % 7);
    return d;
}
Run Code Online (Sandbox Code Playgroud)

  • 对于那些需要获取下一周之后的某一天或下一周之后的星期几的人:添加一个周参数“function nextWeekDay(d, dow, w)”,然后将周添加到计算中并删除模数:“returnDate” .setDate(d.getDate() + (dow+((w * 7)-d.getDay())));` (2认同)

Har*_*Das 7

这是另一个简单的解决方案

//takes dayIndex from sunday(0) to saturday(6)
function nextDate(dayIndex) {
    var today = new Date();
    today.setDate(today.getDate() + (dayIndex - 1 - today.getDay() + 7) % 7 + 1);
    return today;
}
document.write("Next Sunday is: "+nextDate(0).toLocaleString()+"<br/>");
document.write("Next Thursday is: "+nextDate(4).toLocaleString()+"<br/>");
document.write("Next Saturday is: "+nextDate(6).toLocaleString());
Run Code Online (Sandbox Code Playgroud)