@HellYeahOmg

Как получить строковое представление интервала дат используя moment.js?

Есть массив - календарная неделя:
getCurrentWeek = () => {
    var startOfWeek = moment().startOf("isoWeek");
    var endOfWeek = moment().endOf("isoWeek");
    var days = [];
    var day = startOfWeek;

    while (day <= endOfWeek) {
      days.push(day);
      day = day.clone().add(1, "d");
    }
    return days;
  };


Нужно сделать функцию, которая будет выводить дату в виде:
1). "Май – Июнь 2019" (если месяц меняется)
2). "Декабрь 2019 – Январь 2020" (если год и месяц меняются)
3). "Май 2019" (если год и месяц не меняется)
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
function getDatesIntervalStr(dates) {
  const dateParts = d => ({ year: d.year(), month: d.format('MMMM') });
  const start = dateParts(dates[0]);
  const end = dateParts(dates[dates.length - 1]);

  if (start.year !== end.year) {
    return `${start.month} ${start.year} - ${end.month} ${end.year}`;
  } else if (start.month !== end.month) {
    return `${start.month} - ${end.month} ${end.year}`;
  } else {
    return `${end.month} - ${end.year}`;
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
joeberetta
@joeberetta Куратор тега JavaScript
Читай: https://epdf.pub/google-for-dummies.html
В самом moment предлагают использовать вот этот плагин. Можете в оф доках посмотреть.

Подсказка куда копать: Используйте плагин, переводите с помощью встроенного метода в дату и форматируйте вывод как вы и писали (элементарно if/else) Если месяца разные, но год совпадает, то 1 вариант, если года не совпадают то 2 условие ну и если все совпадает, то 3 вариант.
Удачи!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы