【问题标题】:Get array of dates given 2 dates using MomentJs in ReactJs在 ReactJs 中使用 MomentJs 获取给定 2 个日期的日期数组
【发布时间】:2018-10-23 08:11:17
【问题描述】:

目前我正在导入 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
  }
}

【问题讨论】:

  • 看看 moment-range 的 by,它在给定时间段内迭代你的范围。

标签: javascript arrays reactjs momentjs


【解决方案1】:

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

通过使用 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>

【讨论】:

    【解决方案2】:

    既然您已经拥有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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多