如何按日期对 DataTables 行进行排序?
Posted
技术标签:
【中文标题】如何按日期对 DataTables 行进行排序?【英文标题】:How can I sort my DataTables row by date? 【发布时间】:2018-03-30 05:08:54 【问题描述】:我想按日期排序我的专栏: P>
var table = $('#table').DataTable(
"order": [[0, "desc"]],
);
但这里是我的结果: P>
29.06.17
27.06.17
26.06.17
22.08.17
18.10.17
15.09.17
什么我希望是这样的: P>
18.10.17
15.09.17
22.08.17
29.06.17
27.06.17
26.06.17
六月,八月,然后,再九月和十月,然后...... P>
我还测试:
"columnDefs": [
"type": "date-dd.mm.yy", targets: 0
],
但是,这并没有改变任何东西。 P>
【问题讨论】:
我想你必须用dateobjects使其排序工作。见:w3schools.com/jsref/jsref_obj_date.asp 什么语言是什么?跨度> 【参考方案1】:dataTables date
类型使用 Data.parse()
,它只支持一组有限的日期格式。欧洲风格的 dd.mm.yy 不可解析,因此日期是 alpha 排序的。
您可以处理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/
【讨论】:
【参考方案2】:您需要使用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 上的源链接。
【讨论】:
以上是关于如何按日期对 DataTables 行进行排序?的主要内容,如果未能解决你的问题,请参考以下文章