【问题标题】:How do I retrieve the most recent {day of the week} with Moment js?如何使用 Moment js 检索最近的 {day of the week}?
【发布时间】:2021-11-15 17:23:29
【问题描述】:

我需要创建一个函数来根据用户的会议日期生成日期范围。用户在不同的日子见面,在这个例子中,我将使用在星期三与他的小组见面的“John”。我需要的两个日期是最近的星期三和下一个星期三。 例如,如果今天是 11 月 15 日星期一,则函数应返回 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

【问题讨论】:

标签: javascript reactjs momentjs


【解决方案1】:

Moment 不再受支持。这是一个 JavaScript Date API 解决方案。

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

开始日期的计算公式: 日期值(15th) - (今天的日期值 - (#days in a week - day 参数值)

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

结束日期是 7 天后:

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

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

它以今天的日期调用函数,会议设置为星期三 (3)。该函数以{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());

【讨论】:

    猜你喜欢
    • 2022-12-02
    • 2012-11-18
    • 1970-01-01
    • 2022-01-07
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    相关资源
    最近更新 更多