在JavaScript中排序日期

6

我从ajax查询中获取了一条新闻源。在这个对象中,有一个以以下格式表示的日期:

Wed, 22 May 2013 08:00:00 GMT

我想按照日期对所有对象进行排序。是否可以使用Javascript实现?

更新

使用这段代码可以正常工作!

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

你的当前代码看起来是什么样子?你尝试过什么? - h2ooooooo
当然可以。您希望按星期几、时区还是月份排序呢?:-D - Christoph
如果你在 http://google.com 输入 "javascript 数组排序",会发生什么? - zerkms
@zerkms http://meta.stackexchange.com/questions/8724/how-should-we-deal-with-google-questions 和 http://meta.stackexchange.com/questions/5280/embrace-the-non-googlers - Gal
@Gal:你能澄清一下你的观点吗? - zerkms
显示剩余3条评论
3个回答

13

1) 你无法对对象进行排序。对象键的顺序是任意的。

2) 如果你想按日期对数组进行排序(且它们已经是日期对象),请执行以下操作:

array.sort ( function (date1, date2){
     return date1 - date2
});
如果您需要首先将它们转换为日期对象,请按照以下步骤操作(根据您在下面评论中提供的数据结构):
array.sort ( function (a, b){
       return new Date(a.pubDate) - new Date(b.pubDate);
});

示例


事实上,我有一个新闻对象数组,其中包含以下键:标题、描述、URL和发布日期。我想按日期对数组进行排序。 - pxrb66
1
@pxrb66 然后您可以比较数组元素的发布日期 function(a,b){new Date(a.pubDate)-new Date(b-pubDate)} - Christoph
@pxrb66 请随意编写您在更新的答案中发布的代码片段并接受它,或者接受我的答案。无论如何,您都应该接受一个答案来标记您的问题已解决,以便SO社区参考。 - Christoph
你可以在这里找到一些有用的关于此主题的答案:**按日期排序Javascript对象数组**。 - jherax

5
你可以使用 underscore/lodash 的 sortBy 函数进行排序。
下面是使用 underscore js 对日期进行排序的代码示例:
 var log = [{date: '2016-01-16T05:23:38+00:00', other: 'sample'}, 
            {date: '2016-01-13T05:23:38+00:00',other: 'sample'}, 
            {date: '2016-01-15T11:23:38+00:00', other: 'sample'}];

  console.log(_.sortBy(log, 'date'));
这些链接是关于 JavaScript 库中的“sortBy”函数的页面。

1
这真的为我节省了很多时间。简单而有效。 - YulePale

1
sorting dates ascending or descending
times = ["01-09-2013", "01-09-2013", "27-08-2013", "27-08-2013", "28-08-2013", "28-08-2013", "28-08-2013", "28-08-2013", "29-08-2013", "29-08-2013", "30-08-2013", "30-08-2013", "31-08-2013", "31-08-2013"]
function dmyOrdA(a,b){ return myDate(a) - myDate(b);}
function dmyOrdD(a,b){ return myDate(b) - myDate(a);}
function myDate(s){var a=s.split(/-|\//); return new Date(a[2],a[1]-1,a[0]);}

times.sort(dmyOrdA);
console.log(times)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接