基于时间戳对JSON对象进行排序

时间:2014-05-26 07:27:20

标签: javascript json date datetime

我有一组JSON对象,每个对象都有一个日期作为其中一个字段。

var array = [{id: 1, date:'Mar 12 2012 10:00:00 AM'},{id: 2, date:'Mar 8 2012 08:00:00 AM'}]

我想根据时间戳以降序对对象进行排序。我为它写了一个实用工具。即。

var sortedData= array .sort((function (a, b) { return new Date(b.date) - new Date(a.date) }));

但是上述实用程序仅基于日期。在3月12日和3月8日的情况下进行排序。它没有考虑上午10点和上午8点的时间因素。如何使用参数,日期和时间来完成排序。

2 个答案:

答案 0 :(得分:1)

var array = [{id: 1, date:'Mar 12, 2012 07:00:00 AM'},
             {id: 2, date:'Mar 12, 2012 08:00:00 AM'}];
var sortedData= array .sort((function (a, b) { 
                              return new Date(b.date) - new Date(a.date) 
                            }));
console.log(sortedData);

缺少","在你的数组之后的一年

工作小提琴(即使在AM和PM之间只有相同的值也能完美地工作)

http://jsfiddle.net/qR8cW/1/

答案 1 :(得分:0)

您应该使用timestamp进行日期比较,并将比较标志返回sort函数试试此代码

var array = [{id: 1, date:'Mar 12 2012 10:00:00 AM'},{id: 2, date:'Mar 8 2012 08:00:00 AM'}]
function SortByDate(a, b){
    var aD = new Date(a.date).getTime(), bD = new Date(b.date).getTime(); 
    return ((aD < bD) ? -1 : ((aD > bD) ? 1 : 0));
}
console.log(array.sort(SortByDate)); 

FIDDLE DEMO