Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用momentjs比较日期_Javascript_Momentjs - Fatal编程技术网

Javascript 使用momentjs比较日期

Javascript 使用momentjs比较日期,javascript,momentjs,Javascript,Momentjs,我正在使用angularjs和矩库。我有一个对象start\u date,它包含多个日期,一旦用户单击“继续”,我就会将每个日期与今天进行比较,如果给定的日期是过去的,则抛出一个错误 这是我的密码: $scope.checkDateTime = function(){ angular.forEach($scope.orders.start_date,function(s){ console.log('data'+s);

我正在使用angularjs和矩库。我有一个对象
start\u date
,它包含多个日期,一旦用户单击“继续”,我就会将每个日期与今天进行比较,如果给定的日期是过去的,则抛出一个错误

这是我的密码:

$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;
        }
    }
}
$scope.checkDateTime=function(){
angular.forEach($scope.orders.start_日期,函数){
console.log('data'+s);
if(矩.format('DD-MM-YYYY')<矩().format('DD-MM-YYYY')){
游泳({
标题:“请选择一个有效日期。”,
文本:“请选择有效的开始日期。”,
confirmButtonClass:“btn btn主添加产品btn”,
imageUrl:'images/vmy-sub.png'
})
返回false;
}
}
}
编辑


当我安慰
s
的值时,我得到的是“27-10-2016”,当我使用
时刻(s,'DD-MM-YYYY')
时,我得到的是“1477506600000”。所以我认为我得到的值不是字符串,但当我使用时刻直接将其与今天的日期进行比较时,它会显示“无效日期”,我很困惑。请提供帮助。

有一个isAfter功能,您可以随时使用它


您也可以使用简单的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;
                    }
}
$scope.checkDateTime=function(){
angular.forEach($scope.orders.start_日期,函数){
console.log('data'+s);
s=新日期;
var today=新日期();
如果(s.getTime()

希望这有帮助:)

如我在第一条评论中所述,您可以简单地使用或

由于您的输入是一个字符串,所以您可以将其转换为矩对象,然后使用矩方法

你的情况如下:

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

这项艰苦的工作对我来说很有用,试试看

     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;

    }
var sDate=新日期(document.addproject.sDate.value);
var-eDate=新日期(document.addproject.eDate.value);
var today=新日期();
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-今天;
var cy=today.getFullYear();
var cm=today.getMonth();
var cd=today.getDate();
var startdate=null;
var enddate=null;
//警惕(“某些”);
if(sy
在您的情况下,您只需使用:
矩。isBefore(矩())
问题是开始日期不是日期,而是字符串我应该如何首先将其转换为日期然后进行比较?您可以将字符串转换为矩对象,然后使用矩方法。输入字符串的格式是什么?也许您可以编辑您的问题以添加更多详细信息。我们只需要知道
$scope.orders.start\da的值是什么te
,例如,您可以提供console.log('data'+s);
打印的内容。无论如何,我建议编辑您的问题以添加详细信息,而不是将其添加到注释中:)我们可以检查一下时间吗?我的意思是用户最多只能在下午2点下单?您也可以看看这个问题吗?我如何检查currentTime是否大于下午2点?使用矩?您可以使用
moment().isAfter(矩('14:00','HH:mm')检查currentTime是否大于下午2点
。无论如何,您链接的问题有一个很好的答案,我认为您必须编辑另一个问题,指定
$scope.orders.start\u date
DD-MM-yyyyy
格式的字符串数组,并更清楚地说明哪些时间范围有效,哪些无效。您可以使用矩.Js进行日期比较。