Сравните дату с минимальным и максимальным значением не работает - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь сравнить дату с минимальным значением и максимальным значением и что-то там не так.

        var dueDate = moment().add(10, 'years').format('DD-MM-YYYY');
        var minDate = moment().add(-10, 'years').format('DD-MM-YYYY');

        var checkValidDate = function(date) {
            if (Date.parse(date) > minDate || Date.parse(date) < dueDate) return date;
            return null;

и я всегда получаю ноль

пример результата

Спасибо!

Ответы [ 3 ]

0 голосов
/ 26 апреля 2018

Вы должны сначала преобразовать объект даты в строку, используя момент (), а затем изменить формат, используя формат ();

 var checkValidDate = function(date) {
        date = moment(date).format('DD-MM-YYYY');//assuming the parameter date is a Date type object
        if (date > minDate || date < dueDate) return date;
        return null;
}
0 голосов
/ 26 апреля 2018

Я просмотрел код, который вы опубликовали, и обнаружил, что вы используете два разных способа сравнения значений, то есть один - это момент js, а другой - функция jquery Date.parse.

var dueDate = moment().add(10, 'years').format('DD-MM-YYYY');console.log(dueDate)
var minDate = moment().add(-10, 'years').format('DD-MM-YYYY'); console.log(minDate)
var testDate = moment().add(2, 'years').format('DD-MM-YYYY'); console.log(testDate)
var checkValidDate = function(testDate) {
 if (testDate > minDate || testDate < dueDate){ return testDate} else
     return null;
 };
checkValidDate(testDate);

результат: "26-04-2020"
Это вернет дату в строковом формате, а не в формате даты. Вам нужно передать то же самое таким образом
Новая дата (04 + '/' + 26 + '/' + 20)
, которая даст вам вывод: вс 26 апреля 2020 00:00:00 GMT + 0530 (стандартное время Индии)

Спасибо

0 голосов
/ 26 апреля 2018

Вам нужно изменить строки даты на Date Objects, поэтому вам нужно сделать

new Date(minDate)

Но конструктор Date предполагает, что minDate находится в формате «ММ-ДД-ГГГГ», где, как и сейчас, в «ДД-ММ-ГГГГ».

 var dueDate = moment().add(10, 'years').format('MM-DD-YYYY');
 var minDate = moment().add(-10, 'years').format('MM-DD-YYYY');

        var checkValidDate = function(date) {
               date = moment(date, 'DD-MM-YYYY').format('MM-DD-YYYY');
            if (new Date(date) > new Date(minDate) || new Date(date) < new Date(dueDate)) return date;
            return null;  
         }

Или держите каждую дату в момент и просто сравните

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