如何使用javascript找到每个月每周/工作日的相同组合

How to find the same combination of the week/weekday for each month using javascript

本文关键字:工作日 组合 每周 javascript 何使用      更新时间:2023-09-26

这是我正在尝试计算日期范围内的重复日期。我正在粘贴下面的代码,该代码仅与代码中的重复部分相关。它没有计算每个月同一天或任何模式的逻辑。它只有一个间隔。请提出一个解决方案,以从已经只包含开始日期和结束日期之间的范围的数组中找出每月between[]同一天。

switch (true) {
    case (interval == 7):
        //weekly
        //Push in the selected dates in the selected array.
        for (var i = 0; i < between.length; i += 7) {
            selected.push(between[i]);
        }
        break;
    case (interval == 30):
        //Monthly
        //Push in the selected dates in the selected array.
        for (var i = 0; i < between.length; i += 30) {
            selected.push(between[i]);
        }
        break;
    case (interval == 15):
        //Bi-Monthly
        //Push in the selected dates in the selected array.
        for (var i = 1; i < between.length; i += 15) {
            selected.push(between[i]);
        }
        break;
    case (interval == 0):
        //One time event
        //Push in the selected dates in the selected array.
        for (var i = 0; i < 1; i++) {
            selected.push(between[i]);
        }
        break;
    default:
        return undefined;
}

找出下一个重复日期的标准应该是这样的

例如,用户从 1 月的第一周选择星期三,那么下一个重复日期应该是 2 月第一周的星期三。

首先定义选定的对象Date

var between = [new Date(2015, 0, 11), new Date(2015, 0, 20)]

现在确定我们需要的组件。它们是:下一个日期应该什么时候开始。

var start = new Date(between[0].getFullYear(),between[0].getMonth(),between[0].getDate()+27)

它将产生下个月的开始日期和您描述的相同"日"。

将其包装为功能:

var getNextMonth = function (date, howmany){
  return new Date(date.getFullYear(), date.getMonth(), date.getDate()+28*howmany);
};
var getNextMonthRange = function (between, howmany){
  return [getNextMonth(between[0], howmany), getNextMonth(between[1], howmany)]
};

var between = [new Date(2015, 0, 11), new Date(2015, 0, 20)]; // Sunday, 11 Jan 2015 to Tuesday, 20 Jan 2015
var nextBetween = getNextMonthRange(between, 1); // Sunday, 8 Feb 2015 to Tuesday, 17 Feb 2015

我希望这就是你想要的:D