Jquery datatable排序对日期列不起作用?

Jquery datatable排序对日期列不起作用?,jquery,datatables,datatables-1.10,Jquery,Datatables,Datatables 1.10,我有一个jquery数据表,其中日期列格式为2018年2月16日,但排序时,排序不正确 我已经使用了所有提到的与日期相关的列类型 但似乎什么都不管用。我如何解决它 这是密码 Sr 日期 var-table=$(“#JsDataTable”).DataTable({ 滚动:“50vh”, 对,, “aaData”:回应, “pagingType”:“完整编号”, “dom”:“rt”, “sDom”:“Rfrtlip”, “宾福”:没错, “长度菜单”:[ [10, 20, 30, -1],

我有一个jquery数据表,其中日期列格式为2018年2月16日,但排序时,排序不正确

我已经使用了所有提到的与日期相关的列类型

但似乎什么都不管用。我如何解决它

这是密码


Sr
日期
var-table=$(“#JsDataTable”).DataTable({
滚动:“50vh”,
对,,
“aaData”:回应,
“pagingType”:“完整编号”,
“dom”:“rt”,
“sDom”:“Rfrtlip”,
“宾福”:没错,
“长度菜单”:[
[10, 20, 30, -1],
[10,20,30,“全部”]
],
“columnDefs”:[{
“可搜索”:错误,
“可订购”:错误,
“目标”:[0,1,2,3,4],
“类型”:“自然”
}],
“命令”:[
[1,‘asc’]
],
“aoColumns”:[{
“mData”:空
},
{
“mData”:“日期”,
“bSortable”:正确,
“sType”:“天然”
},
],
“搜索”:没错,
“分页”:正确,
“bAutoWidth”:假,
“fixedColumns”:false,
//订单:[],
});

问题可能出在您的
columnDefs
作业中

"columnDefs": [{
     "searchable": false,
     "orderable": false,
     "targets": [0, 1, 2, 3, 4],
     "type": 'natural'
}],
您使用的术语是
“type”:“natural”
,这意味着在执行排序时,它只是对数据进行字母数字排序

例如,日期
2018年12月16日
实际上将被排序为小于
2018年2月16日
,您可以通过进行简单的字符串比较看到这一点

"Dec 16, 2018" < "Feb 16, 2018" = true
此外,您不需要
aoColumns
属性
aoCoulumns
是columnDefs的传统版本。
aoColumns
中的所有信息最好在
columnDefs
属性中表达。事实上,提供这两种方法也可能会导致您的问题,因为您正在以一种方式设置列属性,然后通过其他方式更改其工作方式

下面是一个如何使用日期类型的简单示例

$(文档).ready(函数(){
变量表=$('#示例')。数据表({
columnDefs:[{
"目标":一,,
“类型”:“日期”,
}]
});
} );

身份证件
日期
身份证件
日期
1.
2018年12月16日
1.
2018年1月16日
2.
2018年2月16日
3.
2018年6月16日
4.
2017年6月16日
5.
2016年12月16日
6.
2016年1月16日
7.
2016年2月16日

您可以这样做:

在这个演示中,我用ymdhis格式的日期选取了一个不可见字段,并用下一个不可见字段传递iDataSort,因此您的日期将与该字段一起排序

iDataSort属性用于希望一列按另一列中包含的数据排序的情况。第二列通常是隐藏的

演示


你能在这里发布你的代码吗?同时添加html代码@普密沙阿,请看我编辑了我的问题。我是指你的回答。我想查看您的日期格式我们如何在jquery数据表中对不同的日期格式进行排序,特别是在我的例子中(2018年2月16日)。我同意知道可以根据一列对另一列进行排序是很有用的,但在这种情况下,以不同格式传递相同的数据作为附加列似乎效率很低,特别是对于大数据集。简单明了,逻辑正确。谢谢我使用它作为列的一部分:[{“data”:“dateEstb”,“type”:“date”}],后跟“order”:[[9,“desc”]]。基本上,它表示列是日期类型,排序是基于该类型应用的。
"columnDefs": [
    //non-date fields
    {
        "searchable": false,
        "orderable": false,
        "targets": [0, 2, 3, 4],
        "type": 'natural'
     },
     //date-fields
     {
        "searchable": false,
        "orderable": true,
        "targets": 1,
        "type": 'date'
     }
],
$(document).ready(function() {
    var dataSet = [
        ["Test1", "25 Apr 2011", "20110425"],
        ["Test2", "10 Feb 2011", "20110210"],
        ["Test3", "20 Apr 2012", "20120420"],
        ["Test4", "16 Feb 2018", "20180216"],
    ];
    var myTable;

    myTable = $('#example').DataTable({
        data: dataSet,
        "order": [
            [1, 'asc']
        ],
        "aoColumns": [null, {
            'iDataSort': 2
        }, {
            "bVisible": false
        }]
    });
});