在trNgGrid中排序日期字符串

时间:2017-10-26 09:49:45

标签: javascript angularjs

我的专栏包含字符串格式的日期列表。例如:"Aug 2013", "Sep 2012"

但是当我尝试排序时,它按字母顺序排序。我想到的一种方法是使用javascript将其转换为纪元格式。

new Date("Aug 2013").getTime()

这会以纪元格式1375295400000返回一个长值,我相信我可以对其进行排序。

我无法将其集成到前端代码中。有什么方法可以实现这个目标吗?

2 个答案:

答案 0 :(得分:0)

要对日期列表(字符串格式)进行排序,可以将sort函数与自定义比较函数一起使用。此比较函数将两个字符串转换为日期对象,然后转换为毫秒,并返回差异。

var list = ["Aug 2013", "Sep 2012", "Sep 2010"];
var sli = list.sort(function (a, b) {
    var d1 = new Date(a).getTime();
    var d2 = new Date(b).getTime();
    return d1 - d2;
});
res.end('sli='+sli);

输出:

sli=Sep 2010,Sep 2012,Aug 2013

答案 1 :(得分:0)

好的修复非常简单。我将JSON数据中的UTC时间格式传递为utcTime。因此在TrNgGrid列声明中

field-name="utcTime" display-format="displayTimePeriod:gridItem"

在角度模块中将displayTimePeriod过滤器定义为

.filter("displayTimePeriod", function() {
    return function(fieldValueUnused, item) {
        return item.timePeriod;
    }
})

因此,排序基于utcTime变量进行,但在视图中我显示了timePeriod