2014-03-25 55 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