我试图按日期排序一些数据,尽管日期只是字符串,格式为 dd-mm-yyyy。
我制作了一个过滤器,将纯数字字符串(在美国日期格式中,我想要在英国日期格式中)例如 01272012 转换为 27-01-2014,但是当我尝试订购它们时,它仍然只将它们视为数字字符串,因此 01-01-1990 将出现在 02-01-2014 之前。
关于如何在过滤器中执行此操作有什么建议吗?
Thanks!
Update
我发现如果日期格式是 yyyy-mm-dd,日期会自动排序。然后我用了二手的orderBy:['date']
要对数据进行排序,仅在显示数据时使用我原来的过滤器。
我最终不得不反转我的数据,显示最近的日期。为了实现这一点,我添加了一个-
按照我的订单按声明:orderBy:['-date']
.
Because 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
然后使用 运算符来排序函数。
EDIT:解决方案:reverse
Since :reverse
不能与作为参数传递的函数一起使用,您可以实现自定义函数以返回反转值本身。在这种情况下使用Date
不可能,我会构造一个数字并用减号返回它:
$scope.orderByDate = function(item) {
var parts = item.dateString.split('-');
var number = parseInt(parts[2] + parts[1] + parts[0]);
return -number;
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)