8 javascript date angularjs angularjs-orderby
我试图按日期订购一些数据,虽然日期只是字符串,格式为dd-mm-yyyy.
我做了一个过滤器,它转换了普通的数字字符串(在美国的日期格式,我想要英国日期格式),例如01272012到27-01-2014,但当我尝试订购它时,它仍然只看到它们数字字符串,所以01-01-1990将在02-01-2014之前出现.
有关如何在过滤器中执行此操作的任何建议?
谢谢!
更新
我发现如果日期格式为yyyy-mm-dd,日期会自动排序.然后我用来orderBy:['date']订购数据,只在显示数据时使用我的原始过滤器.
我最终不得不撤消我的数据,显示最近的日期.为了达到这个目的,我-在我的订单中添加了一个声明:orderBy:['-date'].
因为orderBy过滤器,你可以使用它.您的ng-repear可能看起来与此类似:
ng-repeat="item in items | orderBy: orderByDate"
然后在你的控制器上你将定义orderByDate功能:
$scope.orderByDate = function(item) {
    var parts = item.dateString.split('-');
    var date = new Date(parseInt(parts[2], 
                        parseInt(parts[1]), 
                        parseInt(parts[0]));
    return date;
};
该功能的实现取决于您.我选择Date从字符串创建.orderByDate然后,使用<,=,>运算符将从函数返回的对象用于订购.
编辑:解决方案:reverse
由于:reverse不能与作为参数传递的函数一起使用,因此可以实现自定义函数以返回反转值本身.在这种情况下使用Date是不可能的,我会构造一个数字然后用减号返回:
$scope.orderByDate = function(item) {
    var parts = item.dateString.split('-');
    var number = parseInt(parts[2] + parts[1] + parts[0]);
    return -number;
};