2017-10-18 10 views
1

私は日までに私のコラムをソートする:DataTables行を日付順に並べ替えるにはどうすればいいですか?

var table = $('#table').DataTable({ 
    "order": [[0, "desc"]], 
}); 

しかし、ここでは私の結果である:

29.06.17 
27.06.17 
26.06.17 
22.08.17 
18.10.17 
15.09.17 

私が期待する何がこれです:

18.10.17 
15.09.17 
22.08.17  
29.06.17 
27.06.17 
26.06.17 

6月、そして8月、 9月から10月まで。

私もテストしました:

"columnDefs": [ 
    { "type": "date-dd.mm.yy", targets: 0 } 
], 

しかし、これは何も変わりません。

+0

私は、あなたがそれを作るためにDateオブジェクトと仕事をしなければならないと思いsortabl e。参照:https://www.w3schools.com/jsref/jsref_obj_date.asp –

+0

どのような言語ですか? – 1010

答えて

1

データテーブルdateタイプは、限定された日付フォーマットのセットのみをサポートするData.parse()を使用します。ヨーロピアンスタイルのdd.mm.yyは解析できないため、日付はアルファソートされています。あなたがdata attributesに対処することができ

、すなわち各列にdata-sort="10/18/17"を追加することが、私は有効な日付を返す小さなプラグインを作成する方が簡単だと思う:

$.extend($.fn.dataTableExt.oSort, { 
    "jarla-date-pre": function(a) { 
    a = a.split('.'); 
    return new Date(a[1]+'/'+a[0]+'/'+a[2]) 
    } 
}); 

はこのようにそれを使用します。

columnDefs: [ 
    { type: 'jarla-date', targets: 0 } 
] 

デモ - >http://jsfiddle.net/vad94dcs/

+0

これはすごくうまくいく! – Jarla

0

render関数を使用する必要があります。この関数を使用すると、表示する日付をフォーマットし、ソートに生データの値を使用できます。

次のコードでは、moment.jsのjavascriptライブラリを使用して日付をフォーマットしています。

{ 
    data: 'DateField', 
    render: function (data, type, row) { 
    // If display or filter data is requested, format the date 
    if (type === 'display' || type === 'filter') { 

        return (moment(data).format("ddd DD/MM/YYYY (HH:mm)")); 
       } 
    // Otherwise the data type requested (`type`) is type detection or 
    // sorting data, for which we want to use the raw date value, so just return 
    // that, unaltered 
       return data; 
      } 
     }, 

ソースをdatatables forum, hereにリンクしてください。

関連する問題