如何使用javascript或jquery获取日期范围之间的天数

时间:2017-02-07 11:33:37

标签: javascript jquery

在表单中,我定义了开始日期,结束日期和工作日

示例:

Start date: 2017-02-07
End date: 2017-03-07

平日:周一和周四

现在我想通过使用Javascript或jQuery来获取开始日期和结束日期之间的所有星期一和星期四。

谁能帮帮我?

...谢谢

3 个答案:

答案 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。