如何比较所选日期的时间大于今天的日期

时间:2016-10-26 07:50:08

标签: javascript angularjs frontend momentjs

我正在使用angularjs和时刻库,我有start_date对象包含几个日期,一旦用户点击继续我正在检查每个日期以检查它是否是有效日期i,e大于今天或等于今天,否则我就错了。

这是我的代码

$scope.checkDateTime = function(){                    
    angular.forEach($scope.orders.start_date,function(s){
        console.log('data'+s);
        if (moment(s).format('DD-MM-YYYY') < moment().format('DD-MM-YYYY')) {
            swal({
                title: "Please select a valid date.",
                text: "Please select valid start date.",
                confirmButtonClass: "btn btn-primary add-prod-btn",
                imageUrl: 'images/vmy-sub.png'
            })
            return false;
        }
    }
}

修改 当我安慰s的价值时,我得到27-10-2016,当我使用时刻(s,&#39; DD-MM-YYYY&#39;)我得到1477506600000.所以我认为我得到的价值是不是字符串,但是当我直接将它与今天的日期比较时使用它表示无效日期时,我很困惑。请帮忙。

4 个答案:

答案 0 :(得分:1)

您可以使用isAfter功能。

http://momentjs.com/docs/#/query/is-after/

答案 1 :(得分:1)

如我在第一条评论中所述,您只需使用isBeforeisSameOrBefore

由于您的输入是一个字符串,您可以parse进入时刻对象,然后使用时刻方法。

您的情况将是:

moment(s, 'DD-MM-YYYY').isBefore(moment())

答案 2 :(得分:1)

这项艰苦的工作适合我尝试

     var sDate = new Date(document.addproject.sdate.value);
     var eDate = new Date(document.addproject.edate.value);
     var today = new Date();
     var sy=sDate.getFullYear();
     var sm=sDate.getMonth();
     var sd=sDate.getDate();
     var ey=eDate.getFullYear();
     var em=eDate.getMonth();
     var ed=eDate.getDate();
    // var cymd=sDate - today;
     var cy=today.getFullYear();
     var cm=today.getMonth();
     var cd=today.getDate();
     var startdate=null;
     var enddate=null;
    // alert("some ");
     if(sy < cy){
         startdate="notgood"; 
     }
     else if(sm < cm){
             startdate="notgood"; 
         }
     else if(sd < cd){
                 startdate="notgood"; 
             }
     else{
         startdate="good"; 
     }


     if(ey < cy){
         enddate="notgood"; 
     }
     else if(em < cm){
             enddate="notgood"; 
         }
     else if(ed < cd){
                 endtdate="notgood"; 
             }
     else{
         enddate="good"; 
     }


if((document.addproject.sdate.value == "")||
            (startdate !="good" ))

        {
         alert( "Please provide project Excepted Start Date !\n" +
                "Start date must be valid  "  );
         document.addproject.sdate.focus() ;
         return false;

        }
    if((document.addproject.edate.value == "")||
            (enddate !="good"))

    {
     alert( "Please provide project Excepted End Date!\n" +
            "End date must be valid"  );
     document.addproject.edate.focus() ;
     return false;

    }

答案 3 :(得分:0)

您也可以使用简单的 Javascript日期方法来执行此操作。请查看以下内容。

$scope.checkDateTime=function(){                    
                angular.forEach($scope.orders.start_date,function(s){
                    console.log('data'+s);
                    s = new Date(s);
                    var today = new Date();
                    if (s.getTime() < today.getTime()) { // Here "getTime()" converts the date to milliseconds where you can compare in terms of milliseconds. this worked well for me.
                        swal({
                              title: "Please select a valid date.",
                              text: "Please select valid start date.",
                              confirmButtonClass: "btn btn-primary add-prod-btn",
                              imageUrl: 'images/vmy-sub.png'
                            })
                        return false;
                    }
}

希望这会有所帮助:)