2014-03-25 135 views

回答

0

包括moment.js

fileListObj.sort(function(a,b) { 
    return moment(b, 'DD/MM/YYYY').valueOf() - moment(a, 'DD/MM/YYYY').valueOf(); 
}) 
+0

我的日期格式不是這樣的:P – Joe

+0

什麼格式.... – wayne

+0

,格式爲:dd/mm/yyyy – Joe

0

首先你想寫/得到一個日期解析器。使用Javascript的原生Date對象是unreliable for parsing raw strings

那麼你要使用Array.prototype.sort()

function parseDate(input) { 
    var parts = input.split('/'); 
    return new Date(parts[2], parts[1]-1, parts[0]); 
} 

function sortAsc(a,b) 
    { return parseDate(a.date) > parseDate(b.date); } 

function sortDesc(a,b) 
    { return parseDate(a.date) < parseDate(b.date); } 

list.sort(sortAsc); 
0

這裏的工作示例,排序表將包含ISO格式的日期

var dates = ["12/05/2012", "09/06/2011","09/11/2012"] 
var sorted=[]; 
for(var i=0, i= dates.length;i++){ 
    var p = dates[i].split(/\D+/g); 
    sorted[i]= new Date(p[2],p[1],p[0]); 
} 

alert(sorted.sort(function(a,b){return b-a}).join("\n")); 

要獲得相同的輸入格式,你可以使用這個功能:

function formatDate(d) 
{ 
    date = new Date(d) 
    var dd = date.getDate(); 
    var mm = date.getMonth()+1; 
    var yyyy = date.getFullYear(); 
    if(dd<10){dd='0'+dd} 
    if(mm<10){mm='0'+mm}; 
    return d = dd+'/'+mm+'/'+yyyy 
} 
sorted.sort(function(a,b){return b-a}) 
formatSorted = [] 
for(var i=0; i<sorted.length; i++) 
{ 
    formatSorted.push(formatDate(sorted[i])) 
} 

alert(formatSorted.join("\n")); 
+0

這是數組而非對象的示例?好的答案雖然 – Joe

+0

對,你必須解析你的Json然後遍歷鍵/值而不是數組值。對不起,認爲真正的困難是用非iso字符串日期排序 – radia