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;
}
}