我的专栏包含字符串格式的日期列表。例如:"Aug 2013", "Sep 2012"
等
但是当我尝试排序时,它按字母顺序排序。我想到的一种方法是使用javascript将其转换为纪元格式。
new Date("Aug 2013").getTime()
这会以纪元格式1375295400000
返回一个长值,我相信我可以对其进行排序。
我无法将其集成到前端代码中。有什么方法可以实现这个目标吗?
答案 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
。