SetDate () ведет себя странно в модале datepicker - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть дневник в модале DatePicker, который я пишу в React с крючками. Я хочу отобразить сегодняшнюю дату посередине и отсчитывать назад, восходя и вперед, понижаясь с сегодняшнего дня. Мне также нужно, чтобы мои даты переносились на следующий или предыдущий месяц и начинались или заканчивались на правильном количестве дней. Мой html выглядит так

    <div className={'dateField'} ref={dayRef}>
                    <div>{getDayNumber(-3)}</div>
                    <div>{getDayNumber(-2)}</div>
                    <div>{getDayNumber(-1)}</div>
                    {/* TODAY */}
                    <div>{date.getDate()}</div>
                    {/* END TODAY */}
                    <div>{getDayNumber(1)}</div>
                    <div>{getDayNumber(2)}</div>
                    <div>{getDayNumber(3)}</div>
                </div>

У меня есть функция getDayNumber, но она ведет себя очень странно. Он будет считать назад, но не вперед, и устанавливает сегодняшнюю дату минус 1 так же, как сегодняшнюю дату. Я думаю, это потому, что он как-то переключается на количество дней с индексом 0? Как я могу изменить это обратно на номер дня?

const getDayNumber = (dayNumber) => {
    var newDate = new Date(date.setDate(date.getDate() - dayNumber));
    console.log('NEW DATE NUMBER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!', newDate.getDate());
    return newDate.getDate();
};

У меня также есть проблема, из-за которой передача различных чисел в getDayNumber () не работает - я думаю, это потому, что я сбрасываю центральный объект даты with setDate ()?:

const [date, setMyDate] = useState (new Date ());

1 Ответ

0 голосов
/ 27 февраля 2020

Я думаю, установка функции getDayNumber для создания новой даты сначала избавит от проблемы:

const getDayNumber = (dayNumber) => {
    var newDate = new Date();
    newDate.setDate(date.getDate() - dayNumber);
    console.log('NEW DATE NUMBER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!', newDate.getDate());
    return newDate.getDate();
};
...