gpt4 book ai didi

javascript - OrderBy 日期值,在 Angular JS 中只是字符串

转载 作者:数据小太阳 更新时间:2023-10-29 04:12:43 25 4
gpt4 key购买 nike

我正在尝试按日期对一些数据进行排序,尽管日期只是字符串,格式为 dd-mm-yyyy。

我做了一个过滤器,它转换了纯数字字符串(在美国日期格式中,我想要英国日期格式)例如 01272012 到 27-01-2014,但是当我尝试订购它们时它仍然只有将它们视为数字字符串,因此 01-01-1990 会出现在 02-01-2014 之前。

关于如何在过滤器中执行此操作的任何建议?

谢谢!

更新

我发现如果日期格式是 yyyy-mm-dd,日期会自动排序。然后我使用 orderBy:['date'] 对数据进行排序,仅在显示数据时使用我的原始过滤器。

我最终不得不反转我的数据,显示最近的日期。为此,我在我的 orderBy 语句中添加了一个 -:orderBy:['-date']

最佳答案

因为 orderBy 过滤器,您可以使用它。您的 ng-repear 可能与此类似:

ng-repeat="item in items | orderBy: orderByDate"

然后在您的 Controller 上定义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;
};

关于javascript - OrderBy 日期值,在 Angular JS 中只是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25306216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com