首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Moment.js生成一个月的天数失败

使用Moment.js生成一个月的天数失败
EN

Stack Overflow用户
提问于 2017-05-23 11:11:09
回答 3查看 1.5K关注 0票数 0
代码语言:javascript
运行
复制
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;
}

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

EN

回答 3

Stack Overflow用户

发布于 2017-05-23 11:39:13

我觉得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

票数 0
EN

Stack Overflow用户

发布于 2017-05-23 12:10:23

@AlenJenshen:对不起,我没有足够的名气来评论你的问题。但是你的问题有解决方案:

代码语言:javascript
运行
复制
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进行比较。请尝试我的解决方案:)

票数 0
EN

Stack Overflow用户

发布于 2017-05-23 16:32:59

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

下面是一个实时工作示例:

代码语言:javascript
运行
复制
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() );
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44125152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档