【问题标题】:Generate days of a month using Moment.js fails使用 Moment.js 生成一个月中的几天失败
【发布时间】:2017-10-22 20:04:43
【问题描述】:
const generateDatesOfAMonth = () => {

    let start_date_of_month = moment().format("YYYY-MM-01"),
    end_date_of_month = moment().format("YYYY-MM-") + moment().daysInMonth(),
    dayArray = [];

    while (start_date_of_month <= end_date_of_month) {
        dayArray.push({ days: start_date_of_month });
        start_date_of_month = moment(start_date_of_month).add(1, 'days');
    }
    return dayArray;
}

我上面的代码有什么问题?我们可以知道每个月的天数,我通过时刻找到了解决方案,但是我的循环错了吗?我期待几天,但我得到的只是第一天。嗯,有什么线索吗?

【问题讨论】:

标签: javascript reactjs momentjs


【解决方案1】:

我认为 start_date_of_month = moment(start_date_of_month).add(1, 'days');

应该是 start_date_of_month = start_date_of_month.add(1, 'days');

查看此资源: Format date and Subtract days using Moment.js

【讨论】:

  • 您应该将此问题标记为与该问题重复,而不是发布答案。其他人已经这样做了,它会自动生成诸如“(链接)的可能重复”之类的评论。
【解决方案2】:

@AlenJenshen:抱歉,我没有足够的声誉来评论你的问题。但是有你的问题的解决方案:

const generateDatesOfAMonth = () => {

    let start_date_of_month = moment().format("YYYY-MM-01"),
    end_date_of_month = moment().format("YYYY-MM-") + moment().daysInMonth(),
    dayArray = [];


    while (start_date_of_month <= end_date_of_month) {
        dayArray.push({ days: start_date_of_month });
        start_date_of_month = moment(start_date_of_month).add(1, 'days').format("YYYY-MM-DD");
    }
    return dayArray;
}

你忘了格式化start_date_of_month,所以while循环不能比较start_date和end_date。请尝试我的解决方案:)

【讨论】:

    【解决方案3】:

    您可以使用[...Array(moment().daysInMonth()).keys()]; 为每个月的每一天构建和排列一个元素(例如[1, ... 31])。然后你可以使用date()format() 来得到你的结果。

    这是一个实时工作示例:

    const generateDatesOfAMonth = () => {
      // Get array of numbers for each day of the month
      let days = [...Array(moment().daysInMonth()).keys()];
      // Create a moment object for each day and format it
      let dayArray = days.map( day => { 
         return { days: moment().date(day+1).format('YYYY-MM-DD') } 
      });
      return dayArray;
    }
    
    console.log( generateDatesOfAMonth() );
    &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"&gt;&lt;/script&gt;

    【讨论】:

      猜你喜欢
      • 2021-06-28
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多