календарь моментов с 31 декабря 2020 года по 1 января 2020 года

#javascript #reactjs #momentjs

#javascript #reactjs #momentjs

Вопрос:

У меня есть пользовательский компонент календаря, использующий «момент», но у меня возникли проблемы с изменением года.

Когда я выбираю дату в 2021 году, я получаю это в своем журнале консоли:

 selectedDate:  
Moment {_isAMomentObject: true, _isUTC: false, _pf: {}, _locale: Locale, _d: Wed Jan 01 2020 10:19:00 GMT 0000 (Greenwich Mean Time),}
_d: Wed Jan 01 2020 10:19:00 GMT 0000 (Greenwich Mean Time) {}
  
 
const today = moment().startOf("day");

  getDates = month => {
    return Array.from(Array(35)).map((_, i) => {
      return month
        .clone()
        .startOf("month")
        .startOf("isoWeek")
        .add(i, "days");
    });
  };

  nextMonth = () => {
    const month = this.state.month.clone().add(1, "month");
    console.log("check month: -=-=-=-=-=-", month);

    this.setState({
      month,
      dates: this.getDates(month)
    });
  };

  prevMonth = () => {
    const month = this.state.month.clone().subtract(1, "month");s
    this.setState({
      month,
      dates: this.getDates(month)
    });
  };

  render() {
    
    console.log("calendar state, -------", this.state);
    console.log("calendar props, =======", this.props);

    return (

---
     
          {dates.map((date, i) => {
            const selected = !!this.props.selectedDates.find(selectedDate => {
              return (
                console.log("selectedDate: ", selectedDate),
                moment(selectedDate)
                  .startOf("day")
                  .isSame(date)
              );
            });

           
            return (
              <Day
                key={i}
                isDisabled={disabled}
                isGreyed={diffMonth}
                isSelected={selected}
                onClick={() => {
                  if (isShiftHeld) {
                    return this.props.onEndDateClick(date);
                  }
                  this.props.onDateClick(date);
                }}
              >
                <DayContent>{date.format("DD")}</DayContent>
              </Day>
 ----

export default Calendar;
  

Похоже, это связано с getDates функцией. Он устанавливает дни, недели, месяцы для «текущего» года.

Как я могу адаптировать это, чтобы понять, что после 31 декабря год увеличился?

Любая помощь или рекомендации будут оценены.

Комментарии:

1. Пожалуйста, сократите свой код до минимума, необходимого для демонстрации проблемы. Не публикуйте изображения, публикуйте текст. На изображении консоли отображается дата, переходящая с 2020-12-31 на 2021-01-01, так в чем проблема? Функция getDates кажется очень неэффективной.

2. все в порядке, пока я не выберу дату в 2021 году. Затем я получаю ответ, если я утешаю. зарегистрируйте это неверно. См. Обновление выше.