如何按日期排序我的DataTables行?

时间:2017-10-18 10:39:45

标签: php jquery sorting datetime 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 }
],

但这并没有改变任何事情。

2 个答案:

答案 0 :(得分:1)

dataTables 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/

答案 1 :(得分: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链接到来源。