как управлять месяцами с 30 днями и февралем в каландре, используя javascript - PullRequest
0 голосов
/ 31 января 2020

Эта функция вызывается при загрузке компонента. Функции возвращают все месяцы с 31 днем. Февраль и месяцы с 30 днями также возвращаются с 31 днем. Как ограничить количество дней 30 в месяцах и феврале до 28 или 29 в високосный год.

const getCalendarCells = (date, items) => {

  var cells = [];
  try {
    if (items === undefined || items === null) {
      items = {};
    }
    /*----- Finding start of the month -----*/
    var start = new Date();
    start.setMonth(date.getMonth());
    start.setFullYear(date.getFullYear());
    start.setDate(1);
    /*----- Finding start of the calendar date -----*/
    while (start.getDay() != 0) {
      start.setDate(start.getDate() - 1);
    }
    /*----- Finding all calendar day of weeks headers -----*/
    cells.push(['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']);
    /*----- Finding all calendar cells -----*/
    var weekCells = [];
    for (var i = 0; i <= 42; i++) {
      if (i > 0 && i % 7 === 0) {
        cells.push(weekCells);
        weekCells = [];
      }
      if (i === 42) {
        break;
      } else {
        var type = (start.getMonth() === date.getMonth() && start.getFullYear() === date.getFullYear()) ? 'THIS' : 'OTHER';
        weekCells.push({
          data: (type === 'THIS' ? items[start.getDate().toString()] : {}),
          value: new Date(start.toString()).getDate(),
          type: type
        });
        start.setDate(start.getDate() + 1);
      }
    }
    console.log(cells)
    setReport(cells);

  } catch (ex) {}

}
...