我在JavaScript中有一個JSON對象,我試圖按日期排序對象。在JavaScript中按日期排序JSON對象(字符串)
fileListObj[id] = date;
output : "#HIDDEN ID": "16/12/2013"
如何按最近日期排序對象?
我只知道如何在PHP中做到這一點
我在JavaScript中有一個JSON對象,我試圖按日期排序對象。在JavaScript中按日期排序JSON對象(字符串)
fileListObj[id] = date;
output : "#HIDDEN ID": "16/12/2013"
如何按最近日期排序對象?
我只知道如何在PHP中做到這一點
fileListObj.sort(function(a,b) {
return moment(b, 'DD/MM/YYYY').valueOf() - moment(a, 'DD/MM/YYYY').valueOf();
})
首先你想寫/得到一個日期解析器。使用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);
這裏的工作示例,排序表將包含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"));
我的日期格式不是這樣的:P – Joe
什麼格式.... – wayne
,格式爲:dd/mm/yyyy – Joe