我试图在我的数据表中对日期进行排序,例如DD/MM/YYYY
(日,月,年)。
我关注https://datatables.net/plug-ins/sorting/。
但所有日期排序似乎都已弃用,并指向日期时间插件:https://datatables.net/blog/2014-12-18
我似乎无法让datetime插件正常工作以进行排序。我用旧的方式尝试了约会。初始化看起来像这样:
var historiektable = $('#dataTableHistoriek').DataTable({
"paging" : false,
"ordering" : true,
"scrollCollapse" : true,
"searching" : false,
"columnDefs" : [{"targets":3, "type":"date"}],
"bInfo": true
});
如果没有排序,它会显示如下表格结果:
当我把ordering:true
2016日期中的2个出现在列表中的其他位置时(所以,不是按照你期望的顺序)
一切都指向Moment我认为我需要对此进行排序。但我不确定如何。
我在某个地方看到了$.fn.dataTable.moment('DD.MM.YYYY');
,但我知道fn
不再使用这个最新版本的数据表吗?
任何人都知道如何排序日期?
THX
答案 0 :(得分:5)
使用date-eu
排序插件以DD/MM/YY
。
包含以下JS文件//cdn.datatables.net/plug-ins/1.10.11/sorting/date-eu.js
并使用以下代码:
var historiektable = $('#dataTableHistoriek').DataTable({
"paging" : false,
"ordering" : true,
"scrollCollapse" : true,
"searching" : false,
"columnDefs" : [{"targets":3, "type":"date-eu"}],
"bInfo": true
});
答案 1 :(得分:1)
Gyrocode.com的示例似乎是最有效的。最近的解决方案说使用Moments.js,但在我的情况下不起作用。 date-eu不推荐使用DataTables,但是它可以正常工作。
如果要使用日期格式dd / MM / yyyy HH:mm 按日期和时间排序,请以相同的方式使用date-euro。
var table = $('#example-table').DataTable({
columnDefs: [{ 'targets': 0, type: 'date-euro' }],
order: [0, 'desc'],
});
对于初学者,请将JS文件date-euro添加到您的网站。然后在您的代码中添加“ columnDefs”以指示应应用哪一列date-euro:targets =指示包含要排序的日期的列,type =指示要应用到该列的date-euro函数。最后,添加“订单”以应用所需的排序。
答案 2 :(得分:0)
请参阅此笔:https://codepen.io/arnulfolg/pen/MebVgx
它使用//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js和//cdn.datatables.net/plug-ins/1.10.12/sorting/datetime -moment.js用于排序数据表
要默认对表格进行排序,请使用:
$.fn.dataTable.moment('DD/MM/YY');
$('#example').DataTable({
"order": [[ 3, "desc" ]]
});
答案 3 :(得分:0)
以下Plasebo's示例有效,但在我的情况下,MySQL DATE_FORMAT按月值排序,而不是整个日期。我的解决方案是从我的SQL语句中删除DATE_FORMAT。
$(document).ready(function() {
$.fn.dataTable.moment('DD/MM/YY');
$('.happyTable').DataTable({
"ordering": true,
"order": [[ 1, "desc" ]],
});
});
<强> DATE_FORMAT 强>(日期, '%M /%d /%Y')
“2003-12-30 00:00:00” 导致“12/30/2003”,但按月份值排序。
答案 4 :(得分:0)
您可以创建自己的比较器,以控制日期的排序方式。
jQuery.extend(jQuery.fn.dataTableExt.oSort, {
"ddMmYyyy-pre": function (a) {
a = a.split('/');
if (a.length < 2) return 0;
return Date.parse(a[0] + '/' + a[1] + '/' + a[2]);
},
"ddMmYyyy-asc": function (a, b) {
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
},
"ddMmYyyy-desc": function (a, b) {
return ((a < b) ? 1 : ((a > b) ? -1 : 0));
}
});
如您在上面的比较器中所看到的,您可以根据数据选择如何解析日期。
在列定义中:
"columnDefs": [
{
targets: [4], type: "ddMmYyyy"
}]