Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何确定datatables列中的排序问题日期?_Javascript_Jquery_Datatables - Fatal编程技术网

Javascript 如何确定datatables列中的排序问题日期?

Javascript 如何确定datatables列中的排序问题日期?,javascript,jquery,datatables,Javascript,Jquery,Datatables,我有包含多个日期列的数据表。但是,在对asc和desc进行排序时,所有列的日期都不能完美地工作。只需告知我所有的日期都是dd-mm-yyy格式。我正在使用一个函数使其成为dd-mm-yyyy 我试图申请参考,但没有帮助。我不知道我的申请方式是否正确,请更正 HTML <table id="projectListTable"> <thead> <tr> <th>Project Name</th&

我有包含多个日期列的数据表。但是,在对asc和desc进行排序时,所有列的日期都不能完美地工作。只需告知我所有的日期都是dd-mm-yyy格式。我正在使用一个函数使其成为dd-mm-yyyy

我试图申请参考,但没有帮助。我不知道我的申请方式是否正确,请更正

HTML

<table id="projectListTable">
    <thead>
        <tr>
            <th>Project Name</th>
            <th>Plan Start</th>
            <th>Plan Finish</th>
        </tr>
    </thead>
</table>

项目名称
计划开始
计划完成
JS

jQuery.extend(jQuery.fn.dataTableExt.oSort, {
    "extract-date-pre": function(data) {
        if (data == null){
            return data;
        }
        else {
            new_data = data.split("T");
            new_data[0] = displayDate(new_data[0]);
            return new_data[0];
        }
    },
    "extract-date-asc": function(a, b) {
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    },
    "extract-date-desc": function(a, b) {
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    }
});    

$('#projectListTable').DataTable({
    columns: [           
        { data : "project_name" },
        { data : "project_planned_start",        
            render: function(data){
                if (data == null){
                    return data;
                }
                else {
                    new_data = data.split("T");
                    new_data[0] = displayDate(new_data[0]);
                    return new_data[0];
                }
            }
        },
        { data : "project_planned_end",
            render: function(data){
                if (data == null){
                    return data;
                }
                else {
                    new_data = data.split("T");
                    new_data[0] = displayDate(new_data[0]);
                    return new_data[0];
                }
            }
        }     
    ],
    columnDefs: [
        {
            type: 'extract-date',
            targets: [1]
        },
        {
            type: 'extract-date',
            targets: [2]
        }
    ]
});
jQuery.extend(jQuery.fn.dataTableExt.oSort{
“提取日期前”:功能(数据){
如果(数据==null){
返回数据;
}
否则{
新数据=数据分割(“T”);
新_数据[0]=显示日期(新_数据[0]);
返回新的_数据[0];
}
},
“提取日期asc”:功能(a、b){
回报率((ab)?1:0);
},
“提取日期描述”:功能(a、b){
回报率((ab)?-1:0);
}
});    
$('#projectListTable')。数据表({
列:[
{数据:“项目名称”},
{数据:“项目计划启动”,
渲染:函数(数据){
如果(数据==null){
返回数据;
}
否则{
新数据=数据分割(“T”);
新_数据[0]=显示日期(新_数据[0]);
返回新的_数据[0];
}
}
},
{数据:“项目计划结束”,
渲染:函数(数据){
如果(数据==null){
返回数据;
}
否则{
新数据=数据分割(“T”);
新_数据[0]=显示日期(新_数据[0]);
返回新的_数据[0];
}
}
}     
],
columnDefs:[
{
键入:“提取日期”,
目标:[1]
},
{
键入:“提取日期”,
目标:[2]
}
]
});

如果您的实际日期数据采用ISO 8601格式

示例:
2019-03-12T04:08:08.069Z

您可以在每个列的
render
函数中使用

{
    data: "project_planned_start",
    render: function(data, type) {
        if (type === 'sort') { // ADD this for sorting
            return data;
        }
        if (data == null) {
            return data;
        } else {
            new_data = data.split("T");
            new_data[0] = displayDate(new_data[0]);
            return new_data[0];
        }
    }
},

jQuery.extend…
是否仍然需要?
columnDefs
是否仍然需要?如果您的数据采用ISO 8601格式,则不需要。也适用于列定义。您可以像这样指定这两个{type:'extract date',targets:[1,2]},是的,我使用的是ISO 8601格式。你的答案对我有用。谢谢将接受您的答案。例如:对于
=
“1”==1->true,字符串和数字<代码>=是严格的。