Получить массив дат с 2 датами, используя MomentJs в ReactJs - PullRequest
0 голосов
/ 23 октября 2018

В настоящее время я импортирую момент и диапазон моментов, как показано ниже. Нужен массив дат между данными 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 голосов
/ 25 октября 2018

Чтобы выполнить то, что вы просите, поскольку у вас уже есть 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

Вот пример в узле , но в вашем случае это будет похоже на импорт by

0 голосов
/ 23 октября 2018

Вы можете клонировать дату начала и добавлять один день за раз, помещая отформатированную дату в массив.

Используя цикл 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>
...