Дата проверки JS - PullRequest
       51

Дата проверки JS

0 голосов
/ 28 октября 2019

Я должен сделать проверку даты в формате «ДД / ММ / ГГГГ», дата не должна быть в прошлом и должна быть в будущем максимум 6 месяцев. Он работает нормально, но принимает текущий день как недопустимую дату ... Я пробовал много вещей, но не могу понять, почему ... может быть, проблема в том, что строительство ...

let daaa = moment(new Date()).date();
let daaad = moment(new Date()).date();
alert(moment(daaad).isSame(daaa));

также попробуйте new Date().getTime() and getDate() ...

const selectedDate = new Date(value.split('/').reverse().join('-'));
            let today = new Date(Date.now());
            let plusSixMonths = new Date(Date.now());
            plusSixMonths.setMonth(plusSixMonths.getMonth() + 6);
            if (selectedDate >= today && plusSixMonths > selectedDate) return true;

Я ожидал также узнать текущую дату в действительные даты

1 Ответ

0 голосов
/ 28 октября 2019

Проблема вызвана Date.now(), оно включает текущее время. Поэтому, если вы проверяете 28/10/2019, то 2019-10-28T00: 00: 00 почти наверняка предшествует сегодняшней дате с компонентом времени:

(selectedDate >= today && plusSixMonths > selectedDate)

становится

(2019-10-28T00:00:00 >= 2019-10-28T11:02:32 && 2020-04-28T11:02:32 > 2019-10-28T00:00:00)

, чтобудет false.

Вам нужно удалить компоненты времени из today (new Date() также получает текущее время как объект даты)

let today = new Date();
// set hours, minutes, seconds and milliseconds to zero i.e. 12am
today.setHours(0, 0, 0, 0);

Тогда вы сможете выполнить сравнение, как и ожидали.

Обновление Спасибо RobG за то, что он указал, что setHours также может устанавливать минуты, секунды и миллисекунды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...