使用ReactJs中的MomentJs获得给定2个日期的日期数组

时间:2018-10-23 08:11:18

标签: javascript arrays reactjs momentjs

目前,我正在按以下方式导入Moment和Moment范围, 需要给定2个日期之间的日期数组,以便可以迭代日期

import Moment from 'moment';
import {extendMoment} from 'moment-range';

import React, {Component} from 'react';

class T extends Component {
  constructor(props) {
    const start = moment("2018-10-14", 'YYYY-MM-DD');
    const end = moment("2018-10-20", 'YYYY-MM-DD');
    const range = moment.range(start, end);
    //need an array of dates in'YYYY-MM-DD' to itarate
  }
}

2 个答案:

答案 0 :(得分:0)

您可以克隆开始日期并一次添加一天,将格式化的日期推送到数组中。

通过使用while循环和isBefore,您可以确保迭代直到结束日期。

您可能要确保它在开始和结束的边界处正确运行。即:是否要包含或排除输入天数?

const start = moment("2018-10-14", 'YYYY-MM-DD');
const end = moment("2018-10-20", 'YYYY-MM-DD');

const current = start.clone();
const result = [];

while (current.isBefore(end)) {
  result.push(current.format("YYYY-MM-DD"));
  current.add(1, "day");
}

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

答案 1 :(得分:0)

要执行您要的操作,因为您已经拥有moment-range,您可以执行以下操作:

const range = moment.range(moment("2018-10-14"), moment("2018-10-20"));

console.log(Array.from(range.by('day')).map(x => x.format('YYYY-MM-DD')))

如果您不需要立即进行格式化,则只需:

Array.from(range.by('day'))  // for your range

这里是example in node,但在您的情况下,它与导入by相似