IE下比较时间,new Date()不支持入参解决办法

请您移步我的新个人博客: https://moweiwei.com,谢谢!

需求:数组内一组数据,按时间排序,时间格式如:var a = "2018-01-08 00:00:00"。首先想到的是用new Date(a).getTime(),来比较大小,在Chrome下确实可以,但是在IE下不支持new Date()入参。

解决办法1:

$scope.NewDate = function(str) { //解决new Date()IE10不支持参数
          //首先将日期分隔 ,获取到日期部分 和 时间部分
          var day = str.split(' ');
          //获取日期部分的年月日
          var days = day[0].split('-');
          //获取时间部分的 时分秒
          var mi = day[day.length - 1].split(':');
          //获取当前date类型日期
          var date = new Date();
          //给date赋值  年月日
          date.setUTCFullYear(days[0], days[1] - 1, days[2]);
          //给date赋值 时分秒  首先转换utc时区 :+8
          date.setUTCHours(mi[0] - 8, mi[1], mi[2]);
          return date;
      };

重新定义一个函数如上,代替new Date(),可以实现兼容ie,排序如下:

 

 

data.sort(function(a,b){
            return $scope.NewDate(b).getTime() - $scope.NewDate(a).getTime();
          })

解决办法2:项目中用了时间插件moment.js,比较好用,推荐给大家,查了一下该插件中也提供了一种isBefore或isAfter方法可以实现比较时间。

 

 

alert(moment("2018-01-07 12:12:12").isBefore(moment("2018-01-08 13:12:12")))//true

 

 

 

 

 

 

 

你可能感兴趣的:(JavaScript,JS,IE兼容)