Javascript按年份DESC排序日期,然后是月份ASC,然后是ASC日期

时间:2016-04-04 20:35:14

标签: javascript php arrays sorting date

我有一个类数组,它们提供的日期从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方面做到这一点,如果有人有解决方案。

如果你想弄乱它,我会有一个小提琴HERE。 - 使用用户blex的工作代码进行更新

1 个答案:

答案 0 :(得分:2)

Yo可以拆分数据并按年份desc,月份asc和day asc进行独立排序。

<ul>