繁体   English   中英

Javascript按照年份DESC,日期ASC,日期ASC排列数组中的日期

[英]Javascript sort dates in array by year DESC, then month ASC, then day ASC

我有一系列的类,它们的提供日期从AJAX到PHP调用。 它以“数据”形式返回,因此我们将其称为数组数据:

var data = [{
  "course": "First Aid",
  "courseDate": "2016-04-25T00:00:00-06:00"
}, {
  "course": "CPR",
  "courseDate": "2016-04-06T00:00:00-06:00"
}, {
  "course": "ASL1",
  "courseDate": "2016-01-07T00:00:00-06:00"
}, {
  "course": "ASL2",
  "courseDate": "2016-03-25T00:00:00-06:00"
},
...etc...
];

我需要能够按日期降序显示它们。 我正在使用这个简单的功能:

data.sort(function(a, b) {
   a = new Date(a.courseDate);
   b = new Date(b.courseDate);
   return a > b ? -1 : a < b ? 1 : 0;
});

$.each(data, function(key, val) {
   $('#courseHist').append('<br />' + val.course+' - '+val.courseDate);
});

不出所料,我得到了回报

1st Aid - 2016-04-25...
CPR - 2016-04-06...
ASL2 - 2016-03-25...
ASL1 - 2015-12-07...

从技术上讲,按日期降序排序。 但是,我需要返回按年降序排序,然后按月升序排序,然后按日期升序排序。 像这样:

ASL2 - 2016-03-25...
CPR - 2016-04-06...
1st Aid - 2016-04-25...
ASL1 - 2015-12-07...

我知道我需要将约会分成几部分,然后从那里安排,但是我只是无法解决这个问题。 任何帮助是极大的赞赏!

或者,如果有人对此有解决方案,我可以在PHP方面进行。

如果您想弄混我, 这里有一个小提琴。 -更新了来自用户blex的工作代码

您可以拆分数据,然后按年升序,月升序和天升序对数据进行独立排序。

 var data = [{ "course": "First Aid", "courseDate": "2016-04-25T00:00:00-06:00" }, { "course": "CPR", "courseDate": "2016-04-06T00:00:00-06:00" }, { "course": "ASL1", "courseDate": "2016-01-07T00:00:00-06:00" }, { "course": "ASL2", "courseDate": "2016-03-25T00:00:00-06:00" }, { "course": "ASL2X", "courseDate": "2015-03-25T00:00:00-06:00" }]; data.sort(function (a, b) { var aa = a.courseDate.split(/\\D/), bb = b.courseDate.split(/\\D/); return bb[0] - aa[0] || aa[1] - bb[1] || aa[2] - bb[2]; }); document.write('<pre>' + JSON.stringify(data, 0, 4) + '</pre>'); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM