在表单中,我定义了开始日期,结束日期和工作日
示例:
Start date: 2017-02-07
End date: 2017-03-07
平日:周一和周四
现在我想通过使用Javascript或jQuery来获取开始日期和结束日期之间的所有星期一和星期四。
谁能帮帮我?
...谢谢
答案 0 :(得分:1)
简单的代码。 Codepen
var startDate = new Date('2017-02-07');
var endDate = new Date('2017-02-17');
var monday = [];
var thursday = [];
for (var d = new Date(startDate); d <= new Date(endDate); d.setDate(d.getDate() + 1)) {
if(d.getDay()==1)
monday.push(d);
else if(d.getDay()==4)
thursday.push(d);
}
答案 1 :(得分:0)
您可以解析日期并在增量1天内迭代并getDay用sun(0)映射到sat(6)
var startDate = new Date("2017-02-07");
var endDate = new Date("2017-03-07");
var totalMon = [];
var totalThu = [];
for (var i = startDate; i <= endDate; ){
if (i.getDay() == 1){
totalMon.push(i.getFullYear() + "-" + (i.getMonth()+1) + "-" + i.getDate());
}
if (i.getDay() == 4){
totalThu.push(i.getFullYear() + "-" + (i.getMonth()+1) + "-" + i.getDate());
}
i.setTime(i.getTime() + 1000*60*60*24);
}
console.log(totalMon.length ,totalMon);
console.log(totalThu.length ,totalThu);
答案 2 :(得分:0)
下面的代码找到星期一的数量。您可以修改它以计算任何一天。它基本上可以找到两个日期的天数差异。除以7(这是每天的次数)。现在,对于未决日期,循环查看日期并检查所需的日期是否在此循环中。
var startDate = new Date(2017, 02, 07);
var endDate = new Date(2017, 03, 07);
var dayDiff = Math.round((endDate-startDate)/(1000*60*60*24));
var numberOfMondays = Math.floor(dayDiff/7);
var remainingDays = dayDiff%7;
for(i=0;i<remainingDays;i++)
{
var dateObj = new Date();
dateObj.setDate(endDate.getDate() - i);
if(dateObj.getDay() == 2)
numberOfMondays=numberOfMondays+1;
}
alert(numberOfMondays);
PS:另外两个答案是循环所有日期。我不会暗示这一点。在上面的代码中,无论日期的差异如何,循环中的迭代次数都不会超过6。