比较日期,最小值和最大值不起作用

时间:2018-04-26 10:26:56

标签: angularjs datetime

我试图将日期与最小值和最大值进行比较,然后出现问题。

        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;

我总是变空

result example

谢谢!

3 个答案:

答案 0 :(得分:0)

您需要将日期字符串更改为日期对象,因此您需要执行

new Date(minDate)

但是Date构造函数假设minDate的格式为“MM-DD-YYYY&#39;现在它在DD-MM-YYYY&#39;。

&#13;
&#13;
 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;  
         }
&#13;
&#13;
&#13;

或者保持每个日期,只需比较

答案 1 :(得分:0)

  

您应该首先使用moment()将日期对象转换为字符串,然后使用format()更改格式;

@Ignore

答案 2 :(得分:0)

我浏览你发布的代码,发现你使用两种不同的方法比较这些值,一种是时刻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);

结果:&#34; 26-04-2020&#34;
这将以字符串格式返回日期,而不是日期格式。你需要以这种方式传递相同的新日期(04 +&#39; /&#39; + 26 +&#39; /&#39; + 20)
这将给你产出:Sun Apr 26 2020 00:00:00 GMT + 0530(印度标准时间)

由于