jQuery dataTables 排序不适用于 dd-mm-yyyy 格式

Posted

技术标签:

【中文标题】jQuery dataTables 排序不适用于 dd-mm-yyyy 格式【英文标题】:jQuery dataTables sorting is not working for dd-mm-yyyy format 【发布时间】:2015-01-24 16:41:33 【问题描述】:

在我的项目中,我想对 dd-mm-yyyy 格式的日期进行排序。我在下面尝试过这样的

jQuery.extend(jQuery.fn.dataTableExt.oSort, 
    "date-uk-pre": function(a) 
        var ukDatea = a.split('-');
        return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
    ,

    "date-uk-asc": function(a, b) 
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    ,

    "date-uk-desc": function(a, b) 
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    
);

但这不起作用。此处仅对日期和月份进行排序,而不是基于年份。我从这里参考了Datatable date sorting dd/mm/yyyy issue

【问题讨论】:

有人对此有答案吗? 【参考方案1】:

我知道这是一个老问题,但如果您刚从 Google 来到这里,现在有一个内置的解决方案。

只需为元素添加一个 html5 属性:

<td data-th="Lastrun" data-order="[unixTimestamp]">
    [myWeirdDateFormat]
</td>

https://datatables.net/examples/advanced_init/html5-data-attributes.html

【讨论】:

谢谢马克。好的,我会打的【参考方案2】:

它对我来说开箱即用,但我的日期和时间不那么复杂,所以如果你使用这个http://datatables.net/plug-ins/sorting/ 可能是最好的@

【讨论】:

【参考方案3】:

带有隐藏的动态跨度元素

在我的例子中,数据是从服务器动态检索的,所以我找到了这个解决方案

           var data = aResponce.noOfShipmentsTableData; //dynamic data from server
           for (var i = 0; i < data.length; i++) 
            var array = [];
            var pickUpDate = data[i]["pickUpDate"]; //date to sort
            var span = pickUpDate.split("/");
            if (span[1].length == 1) 
                span[1] =  "0" + span[1];
            if (span[0].length == 1) 
                span[0] =  "0" + span[0];

            span = "<span class='hideSpan'>"+span[2]+span[1]+span[0]+"</span>";
            var PickUpDateTd = "<td>"+span+pickUpDate+"</td>";
            array.push(PickUpDateTd); //push as many values you want in one row of datatable

            totalCtsBookedTbl.api().row.add(array); //totalCtsBookedTbl is reference variable to my datatable
        
        totalCtsBookedTbl.api().draw();

.hideSpan 
  display: none;

【讨论】:

以上是关于jQuery dataTables 排序不适用于 dd-mm-yyyy 格式的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery DataTables 恢复原始排序顺序

Jquery Datatables 事件处理程序不适用于分页

零配置jQuery Datatable默认分页不适用于大表

数据表搜索和排序不适用于动态添加的数据

DataTables 分页似乎不适用于服务器端数据

jQuery.repeater 不适用于可排序的 jQuery Ui