Javascript 如果未在所需周中找到,则获取工作日的下一个事件

Javascript 如果未在所需周中找到,则获取工作日的下一个事件,javascript,date,recurrence,Javascript,Date,Recurrence,如果在所需的一周内找不到某个工作日的下一个事件,我怎么能想出一个算法来找出它。例如,下面是日历的屏幕截图。四月的第一周没有星期二。我需要一个主意,如果在给定的一周内没有出席,我如何参加下周的下一个星期二? 下面是我的算法,它在获取任何一周的选定工作日时都运行良好。我只想在其中添加两个条件,以便在给定的一周中不存在weekday的情况下来回迭代 for(var ind=0; ind<=between.length; ind++){ if (new Date(between[ind])

如果在所需的一周内找不到某个工作日的下一个事件,我怎么能想出一个算法来找出它。例如,下面是日历的屏幕截图。四月的第一周没有星期二。我需要一个主意,如果在给定的一周内没有出席,我如何参加下周的下一个
星期二

下面是我的算法,它在获取任何一周的选定工作日时都运行良好。我只想在其中添加两个条件,以便在给定的一周中不存在weekday的情况下来回迭代

for(var ind=0; ind<=between.length; ind++){
   if (new Date(between[ind]).getMonthWeek() === baseDtWk && new Date(between[ind]).getDay() === baseDtD) {
       datesToBeMarked.push(between[ind]);
       console.log(" :Date: " + between[ind] + " :Week: " + new Date(between[ind]).getMonthWeek());
       console.log("Date entered : " + new Date(between[ind]));
   }

}

for(var ind=0;ind通过查看您的代码,您似乎已经有了适当的结构,只需要知道如何利用它

我将稍微修改您的
if条件,如下所示

  for(var ind=0; ind<=between.length; ind++){
      var thisDt = new Date(between[ind]);
      if (thisDt.getMonthWeek() === baseDtWk && thisDt.getDay() === baseDtD) {
          datesToBeMarked.push(thisDt);
          console.log(" :Date: " + between[ind] + " :Week: " + thisDt.getMonthWeek());
          console.log("Date entered : " + new Date(between[ind]));
          }
     }
3.如果
,则在上面的
中发生了什么?它正在检查您已选择的
星期二与下一个元素。如果它在同一个月内出现,则拒绝它。否则,让它进入
如果条件
中,以查看神奇的移动。:)

4.最后,在您的
中,如果您需要调用一个函数,该函数将为您找到
星期二的
下一次出现的
,如果它最初在第一周没有出现,如上图所示

5.查找日期的函数如下所示。希望你们都准备好了。 下面的函数需要在
中替换,否则如果使用此注释
//则需要在此处执行一些神奇的操作

function nthDay(nth, weekday, month, year) {
    var nthDate = new Date(year, month + ((nth <= 0) ? 1 : 0), 1);
    var dayofweek = nthDate.getDay();
    var offset = weekday - dayofweek;
    nthDate = new Date(year, month + ((nth <= 0) ? 1 : 0), nthDate.getDate() + (offset + (nth - (offset >= 0 ? 1 : 0)) * 7));
    if (nthDate.getMonth() !== month) {
        return false;
    } else {
        return nthDate;
    }
}
功能第n天(第n天、工作日、月、年){
变量n日期=新日期(年、月+(n
function nthDay(nth, weekday, month, year) {
    var nthDate = new Date(year, month + ((nth <= 0) ? 1 : 0), 1);
    var dayofweek = nthDate.getDay();
    var offset = weekday - dayofweek;
    nthDate = new Date(year, month + ((nth <= 0) ? 1 : 0), nthDate.getDate() + (offset + (nth - (offset >= 0 ? 1 : 0)) * 7));
    if (nthDate.getMonth() !== month) {
        return false;
    } else {
        return nthDate;
    }
}