如何使用 Moment js 检索最近的{星期几}?

How do I retrieve the most recent {day of the week} with Moment js?

我需要创建一个函数来根据用户的会议日期生成日期范围。用户在不同的日子开会,在这个例子中,我将使用“约翰”,他在星期三与他的小组开会。我需要的两个日期是最近的周三和下周三。 例如,如果今天是 11 月 15 日星期一,则函数应该 return 11/10/2021 & 11/17/2021

我当前的代码只能在会议当天或已经发生之后工作,因为它拉动了本周的星期三和下周的星期三...

  const DateRange = () => {
    switch (user.groups[0].meetingDay) {
      case "monday":
        return [1, 8];
      case "tuesday":
        return [2, 9];
      case "wednesday":
        return [3, 10];
      case "thursday":
        return [4, 11];
      case "friday":
        return [5, 12];
      case "saturday":
        return [6, 13];
      case "sunday":
        return [0, 7];
    }
  };

  const firstNumber = DateRange().push(0);
  const secondNumber = DateRange().pop(0);
  const goalsDateRangeStart = moment().day(firstNumber).format("l");
  const goalsDateRangeEnd = moment().day(secondNumber).format("l");

如果在 11 月 15 日使用上面的代码,它将给我 11/17/2021-11/24/2021

Moment 不再受支持。这是 JavaScript 日期 API 解决方案。

注意:日期值范围为 0(星期日)- 6(星期六)

开始日期的计算公式为: 日期值(15日)-(今天的值-(#days in a week - the day parameter value)

15 - ( 1 + 7 - 3) = 10 - 开始日期是 10 号

结束日期是 7 天后:

10 + 7 = 17th - 结束日是 17 号

代码确保每个日期使用单独的日期 object。

它使用今天的日期调用函数,会议设置为星期三 (3)。函数 returns 和 object 的形式为 {start: Date, end: Date}:

// Takes a Date object (default today) and int Day of the week (default Monday)
function dateRange(date = new Date(), day = 0) {
  const start = new Date(date.setDate(date.getDate() - (date.getDay() + (7 - day))));
  return {
    start: start,
    end: new Date(new Date(start).setDate(start.getDate() + 7))
  };
}
// Call function with today's date with meetings scheduled for Wednesdays
const range = dateRange(new Date(), 3);
console.log(range.start.toDateString(),'-', range.end.toDateString());