如何按Angular中的日期排序

时间:2014-06-19 23:59:34

标签: javascript angularjs

我想在AngularJs中对ng-repeat中的列进行排序。

我有这样的事情:

<th class="cl_sort_init" ng-click="predicate='EstimatedCloseDate';
    reverse=!reverse" ng-class="{'cl_sort_desc': 
predicate=='EstimatedCloseDate'&&reverse==true, 'cl_sort_asc': 
predicate=='EstimatedCloseDate'&&reverse==false}">Close Date</th>

然而,EstimatedCloseDate是一个字符串。因此它不应该按照它应该的方式工作。如何使其作为本专栏的日期工作。其他列是字符串,它们工作正常。

任何想法和建议!!!

2 个答案:

答案 0 :(得分:1)

根据日期字符串的格式,您可以执行

(new Date(EstimatedCloseDate))

这将解析日期字符串,然后将其转换为日期对象,这将对排序很好 如果这不起作用,您将必须编写自己的日期解析器,最终将日期转换为int或Date对象

答案 1 :(得分:0)

在谓词中,您应该能够将字符串转换为日期时间。不需要其他转换。请参阅此处了解字符串到日期的转换:Converting string to date in js和格式详情。

如果您的日期格式不正常,请查看像datejs这样的图书馆以获取帮助。

但是这里有一些片段将几个日期字符串转换为日期。请注意,上次转换失败。

var dtString = "2010-12-25";
var dt = new Date(dtString);
console.log(dtString + " = " + dt);

dtString = "12/25/2010";
dt = new Date(dtString);
console.log(dtString + " = " + dt);

dtString = "25/12/2010";
dt = new Date(dtString);
console.log(dtString + " = " + dt);

输出:

2010-12-25 = Fri Dec 24 2010 18:00:00 GMT-0600 (CST)
12/25/2010 = Sat Dec 25 2010 00:00:00 GMT-0600 (CST)
25/12/2010 = Invalid Date