需求:数组内一组数据,按时间排序,时间格式如: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