21

配列をソートしようとしています。

配列は、時間形式のデータで構成されます。

配列:

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

どのように並べ替えればよいですか?

このデータを json サービスを使用して取得し、それを使用して jquery mobile の listview にイベントをリストしています。しかし、私は時間でイベントをソートしたい.

更新: 日付と時刻の両方で JSON からデータを並べ替える方法:

日付と時刻で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;
       });


}); 
4

5 に答える 5

47

これを試して

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);
于 2013-06-12T11:46:15.707 に答える
5

sort(compare)関数を実装し、任意の日付を使用して日付文字列を比較します。

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

01/01/2013は任意の日付です。

于 2013-06-12T11:45:26.803 に答える
2
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;
}
于 2013-06-12T12:05:11.970 に答える