我想在jquery中获取两个日期之间的所有日期,不包括周末[closed]

cygmwpex  于 2022-11-22  发布在  jQuery
关注(0)|答案(1)|浏览(155)

已关闭。此问题需要更多focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

三年前就关门了。
Improve this question
我想打印start_date和end_date之间的所有日期,不包括周末(周六、周日)。我想要jquery代码。
我能计算出两个日期之间的天数,不包括周末,但不知道如何获得所有日期。
我试过这个代码。

function getBusinessDateCount (startDate, endDate) {
    var elapsed, daysBeforeFirstSaturday, daysAfterLastSunday;
    var ifThen = function (a, b, c) {
        return a == b ? c : a;
    };

    elapsed = endDate - startDate;
    elapsed /= 86400000;

    daysBeforeFirstSunday = (7 - startDate.getDay()) % 7;
    daysAfterLastSunday = endDate.getDay();

    elapsed -= (daysBeforeFirstSunday + daysAfterLastSunday);
    elapsed = (elapsed / 7) * 5;
    elapsed += ifThen(daysBeforeFirstSunday - 1, -1, 0) + ifThen(daysAfterLastSunday, 6, 5);

    return Math.ceil(elapsed);
}

这是给我没有周末的日子,假设我选择的日期从星期五到星期一,那么只有2天将被给予。

ryevplcw

ryevplcw1#

下面的代码将遍历给定时间范围内的所有日期,如果日期不是星期六或星期日,则将日期推送到数组中。它不考虑公共假日,并使用Vanilla JS(不需要jQuery)。
正如您所看到的,我使用.getDay()来确定给定日期是星期几,并检查它不等于6(星期六)或0(星期日)。
然后我把它推到dates数组中,在你认为合适的时候使用。我使用.push(new Date(current))而不是简单的.push(current)的原因是.setDate函数替换变量指向的值,如果没有它,会导致数组中充满相同的日期x次。
可以完全删除current变量,并更改代码以使用start变量,但我喜欢创建一个新变量,只是为了可读性。

const getBusinessDays = (startDate, endDate) => {
  const start = new Date(startDate);
  const end = new Date(endDate);
  const current = new Date(startDate);
  const dates = [];

  while (current <= end) {
    if (current.getDay() !== 6 && current.getDay() !== 0) {
      dates.push(new Date(current));
    }

    current.setDate(current.getDate() + 1);
  }

  return dates;
}

const businessDays = getBusinessDays('10-01-2019', '11-29-2019');

console.log(businessDays);

相关问题