IE下比較時間,new Date()不支援入參解決辦法
阿新 • • 發佈:2019-02-05
需求:陣列內一組資料,按時間排序,時間格式如:var a = "2018-01-08 00:00:00"。首先想到的是用new Date(a).getTime(),來比較大小,在Chrome下確實可以,但是在IE下不支援new Date()入參。
解決辦法1:
重新定義一個函式如上,代替new Date(),可以實現相容ie,排序如下:$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; };
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