MomentJS получает предыдущие даты относительно сегодняшнего дня - PullRequest
0 голосов
/ 05 декабря 2018

Есть ли какой-нибудь способ получить дни после текущего дня, используя MomentJS?

Например, предположим, что это 5 января 2018 , как бы получить предыдущие даты с 1 января 2018 до 5 января 2018 ?

Мой текущий код выглядит так:

const monthArr = [];
const dayArr= [];
const currentDate = moment(new Date()).format("DD");

for (let i = 0; i < +currentDate; i++) {
  const month = moment(new Date())
    .subtract(i, "day")
    .format("MMYYYY");

  const day = moment(new Date())
    .subtract(i, "day")
    .format("MMDDYYYY");

  console.log("month" + month);
  console.log("day" + day);

  let monthObj = {};
  let dailyObj = {};

  monthArr.push(
    (monthObj = {
      data: {
        [month]: Object.assign({}, document)
      }
    })
  );
  day.push(
    (dailyObj = {
      data: {
        [day]: Object.assign({}, document)
      }
    })
  );

  monthly(user_id, monthArr[i]) &&
  daily(user_id, dayArr[i]);
}

1 Ответ

0 голосов
/ 06 декабря 2018

Код в OP кажется очень неэффективным и гораздо более сложным, чем требуется.

Чтобы сгенерировать серию отформатированных строк для дат от сегодняшнего дня до начала месяца, нужна только одна Дата и некоторая очень простая арифметикаи форматирование.Это действительно не нуждается ни в библиотеке, ни в какой-либо арифметике даты, например

// Pad single digit number with leading zero
function pad(n){
  return (n < 10? '0' : '') + n;
}

var today = new Date(),
    year = today.getFullYear(),
    month = pad(today.getMonth() + 1),
    day,
    i = today.getDate();

do {
  day = pad(i);
  console.log(`Month: ${month + year}`);
  console.log(`Day: ${month + day + year}`);
} while (--i)

Существует ряд других проблем с вашим кодом, но они не имеют прямого отношения к вопросу.

...