首页 > 解决方案 > 为什么当我选择超过 10 天时条件不起作用?

问题描述

这是我的代码,我正在尝试制作一个日期选择器来选择没有星期六和星期五选择的天数,它工作正常但是当我选择一个以上的周末(2 个星期五或 2 个星期六)并且最后一天是周末时它会逃脱最后一个周末,如果第 30 天是星期六,我从第 1 天到第 30 天选择它给我 23,但是如果我选择 1 到 28,它给我 22。

var date = new Date();
var tomorrow = new Date();
tomorrow.setDate(date.getDate() + 1);
$('#picker').daterangepicker({
  "linkedCalendars": true,
  "showCustomRangeLabel": false,
  "startDate": date.getDate(),
  "endDate": tomorrow,
  "cancelClass": "btn-danger",
  "minDate": date.getDate(),
  "opens": "center",
  "autoApply": true
}, function(start, end) {
  function parseDate(str) {
    var mdy = str.split('-');
    var x = new Date("'" + mdy[0] + "-" + mdy[1] + "-" + mdy[2]);
    return x;
  }
  var between = [];

  function datediff(first, second) {
    var currentDate = new Date(first);
    between = [];
    while (currentDate <= second) {
      between.push("'" + currentDate.getFullYear() + "-" + (currentDate.getMonth() + 1) + "-" + currentDate.getDate() + "'");
      currentDate.setDate(currentDate.getDate() + 1);
    }
    //return Math.round((second-first)/(1000*60*60*24))+1;
  }
  datediff(parseDate(start.format('YYYY-MM-DD')), parseDate(end.format('YYYY-MM-DD')));
  var s = "",
    n = "",
    fri = "",
    sat = "",
    i;
  var number = between.length;

  function getweekend() {
    for (i = 0; i <= number + 1; i++) {
      s = new Date(between[i]);
      n = s.getDay();
      fri = (n === 5);
      sat = (n === 6);
      if (fri) {
        console.log("fri");
        number = number - 1;
        continue;
      } else if (sat) {
        console.log("sat");
        number = number - 1;
        continue;
      } else {
        console.log(n);
        continue;
      }
    }
    console.log("after minus:" + number);
  }
  console.log("plus minus:" + number);
  getweekend();
});

标签: javascriptbootstrap-datepicker

解决方案


推荐阅读