1. 程式人生 > >IE下比較時間,new Date()不支援入參解決辦法

IE下比較時間,new Date()不支援入參解決辦法

需求:陣列內一組資料,按時間排序,時間格式如: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