【问题标题】:Sorting JSON objects on the basis of timestamp根据时间戳对 JSON 对象进行排序
【发布时间】:2014-05-26 07:27:20
【问题描述】:

我有一个 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 点的时间因素。如何使用参数、日期和时间进行排序。

【问题讨论】:

  • 对我来说很好。请注意:b-a 反向排序(降序),所以首先更高。 a-b 正常排序(升序),所以先降序。您的意思是对 DESC 进行排序吗?
  • 您可以在此处找到有关该主题的一些有用答案:Sort Javascript Object Array By Date

标签: javascript json date datetime


【解决方案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/

【讨论】:

  • @Rudie 现在好点了吗?
  • @Girish 你在说什么?测试看看它是如何工作的
  • @Girish 尝试使用此值 var array = [{id: 1, date:'Mar 12, 2012 08:00:00 AM'},{id: 2, date:'Mar 12, 2012 08:00:00 PM'}]; 并查看输出
  • 我想是的。 b - a 排序相反,所以首先更大。
  • @Girish 事实上,如果你测试var array = [{id: 1, date:'Mar 12, 2012 08:00:00 AM'},{id: 2, date:'Mar 12, 2012 08:00:00 PM'}];,你会首先看到更大的(“PM”)。我觉得你很困惑。
【解决方案2】:

你应该使用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

【讨论】:

    猜你喜欢
    • 2018-08-09
    • 2020-04-15
    • 2017-12-06
    • 2019-03-14
    • 2016-09-01
    • 2012-07-15
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    相关资源
    最近更新 更多