我有一個類的數組和他們提供的日期從AJAX返回到PHP調用。它的返回爲「數據」,所以我們只需撥打我們的陣列中的數據:JavaScript按年排序日期DESC,然後月ASC,然後一天ASC
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的工作代碼
一旦您完成了日期的情況下,你可以使用[日期API(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)提取年份('.getFullYear()'),月份('.getMonth()'),月份日期('.getDate()')等。 – Pointy
這是我最初的想法,但我我真的很難搞清楚如何在函數中實際寫出它。這就是我需要它做的,就是。 –
固定小提琴:https://jsfiddle.net/ts5mks95/它將開始按年份排序(降序),然後如果它們相等,按月排序(升序),那麼如果它們相等,則按照月份(升序)。 – blex