Javascript 如何确定datatables列中的排序问题日期?
我有包含多个日期列的数据表。但是,在对asc和desc进行排序时,所有列的日期都不能完美地工作。只需告知我所有的日期都是dd-mm-yyy格式。我正在使用一个函数使其成为dd-mm-yyyy 我试图申请参考,但没有帮助。我不知道我的申请方式是否正确,请更正 HTMLJavascript 如何确定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&
<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,字符串和数字<代码>=是严格的。