下面一段代碼:排序字符串日期陣列中升序和降序
var dateArr = new Array();
dateArr[0] = "11-12-2012";
dateArr[1] = "9-12-2014";
dateArr[2] = "11-12-2012";
dateArr[3] = "9-12-2011";
不得不在升序和降序上述字符串日期數組進行排序。請AnyOne給我一些建議和解決相同的例子。 在此先感謝。
下面一段代碼:排序字符串日期陣列中升序和降序
var dateArr = new Array();
dateArr[0] = "11-12-2012";
dateArr[1] = "9-12-2014";
dateArr[2] = "11-12-2012";
dateArr[3] = "9-12-2011";
不得不在升序和降序上述字符串日期數組進行排序。請AnyOne給我一些建議和解決相同的例子。 在此先感謝。
試戴
var arr = [];
for(var i =0; i<dateArr.length; i++)
{
date1 = dateArr[i].split("-");
if(date1[0]<10){date1[0]='0'+date1[0]}
if(date1[1]<10){date1[1]='0'+date1[1]}
arr.push(new Date(date1[2], date1[1] - 1, date1[0]));
}
arr.sort(function(a,b){return a-b}); //asc
console.log(formatDateArr(arr));
arr.sort(function(a,b){return b-a}); //desc
console.log(formatDateArr(arr));
function formatDateArr(arr)
{
formatedArr = [];
for(var i=0; i<arr.length; i++)
{
var curr_date = arr[i].getDate();
var curr_month = arr[i].getMonth() + 1; //Months are zero based
var curr_year = arr[i].getFullYear();
formatedArr.push(curr_date + "-" + curr_month + "-" + curr_year);
}
return formatedArr;
}
arr
將是排序日期陣列。
感謝您的回覆。這就是我一直在尋找的東西。 但是,當我在Chrome上運行它時,它工作正常。但是當在Mozilla中運行相同的代碼時,它顯示出以下結果:[「NaN-NaN-NaN」,「NaN-NaN-NaN」,「NaN-NaN-NaN」,「NaN-NaN-NaN」] 你能幫我把它整理出 –
是的,實際上firefox不會創建格式爲DD-MM-YYYY的日期,所以我們必須先將它格式化一下,然後再將其轉換爲日期對象。我編輯了小提琴鏈接並回答,pl檢查! –
現在感謝它的真正有用... –
這是未經測試的代碼,但得到的答覆是這樣的:
dateArr.sort(function(d1,d2) {
var year1 = d1.substr(6,4);
var year2 = d2.substr(6,4);
if (year1 < year2) return -1;
if (year1 > year2) return 1;
var month1 = d1.substr(3,2);
var month2 = d2.substr(3,2);
if (month1 < month2) return -1;
if (month1 > month2) return 1;
if (d1 < d2) return -1;
if (d1 > d2) return 1;
return 0;
});
我不記得,如果-1或1意味着上升或下降,因此他們可能需要被交換。
編輯:掛上,這將無法正常工作,因爲有些日期沒有完全10個字符。因此,您必須爲「 - 」字符執行字符搜索(「indexOf()」方法),並在.substr方法中使用這些索引,而不是盲目的6,4或3,2
Loop在元素上,將每個元素轉換爲日期對象,然後[對它們進行排序](https://stackoverflow.com/questions/11170054/compare-two-dates-with-javascript)。 – Andy