2013-06-12 27 views
8

我想排序我的數組。這個數組由時間格式的數據組成。以'09:00 AM'的格式對字符串數組進行排序?

陣:

'9:15 AM', '10:20 AM', '02:15 PM' 

我應該如何排序呢?

我得到這個數據usig json服務&使用它來列出jquery mobile列表視圖中的事件。但我想按時間排序。

UPDATE: 我如何排序的數據從JSON BY日期和時間:

對於我對數據進行排序的具體問題使用JSON得到了由日期&時間我這樣做:

$.getJSON(serviceURL + 'read.php?month_no='+month_no, function(data) { 


     events = data.data; 

     events.sort(function(a,b){ 
      a = new Date(a.event_date+' '+a.event_time); 
      b = new Date(b.event_date+' '+b.event_time); 
      return a<b?-1:a>b?1:0; 
     }); 


}); 
+0

我會分成2個數組的集合:1與AM字符串,1與PM字符串,然後單獨排序,並顯示他們一個接一個。 –

回答

17

試試這個

var times = ['01:00 am', '06:00 pm', '12:00 pm', '03:00 am', '12:00 am']; 

times.sort(function (a, b) { 
    return new Date('1970/01/01 ' + a) - new Date('1970/01/01 ' + b); 
}); 

console.log(times); 
+0

這只是我想要的。謝謝 。 我沒有想過使用Date對象進行比較。 – user2458935

+0

不客氣。 –

+0

但你能告訴我如何使用這個來分類使用json的數據。 \t $ .getJSON(serviceURL中+ 'read.php month_no =?' + month_no,功能(數據){ \t \t 事件\t = data.data; 存在「YYYY-MM事件[] EVENT_DATE。 -dd'格式和 事件[]。event_time以上面給出的格式 – user2458935

2

執行sort(compare)函數並使用任意日期比較日期字符串:

Array.sort(function (a, b) { 
    return Date.parse('01/01/2013 '+a) - Date.parse('01/01/2013 '+b) 
}); 

01/01/2013是任意日期。

1
var a = ['9:15 AM', '10:20 AM', '02:15 PM']; 

var sort = function(a){ 
    var sa = [], 
     d = new Date(), 
     ds = d.toDateString(); 

    for(var i = 0; i < a.length; i++){ 
    d = new Date(ds + ' ' + a[i]); 
    sa.push(d); 
    } 

    sa.sort(function(a, b){return a.getTime() - b.getTime();}) 
    return sa; 
} 
1

我的解決方案(對於格式化如 「11:00」, 「16:30」 的時間..)

sortTimes: function (array) { 
    return array.sort(function (a, b) { 
     if (parseInt(a.split(":")[0]) - parseInt(b.split(":")[0]) === 0) { 
      return parseInt(a.split(":")[1]) - parseInt(b.split(":")[1]); 
     } else { 
      return parseInt(a.split(":")[0]) - parseInt(b.split(":")[0]); 
     } 
    }) 
} 

如果有人想知道哈哈

相關問題