DataTables和moment.js无法按日期正确排序

时间:2018-10-11 10:39:30

标签: jquery datatables

我正在尝试使用https://datatables.net/blog/2014-12-18上的信息来使DataTable对dd/mm/yyyy格式的日期列进行排序,例如11/10/2018(代表2018年10月11日)。

我已包括以下脚本-按此顺序

  • jquery.dataTables.1.10.7.min.js(本地托管)
  • // cdn.datatables.net/plug-ins/1.10.19/sorting/datetime-moment.js
  • moment.js(2.10.3版,本地托管)

根据上面URL上的信息,我的DataTables初始化看起来像这样:

$(document).ready(function() {
    $.fn.dataTable.moment( 'd/m/Y' );

    $('#coursesTable').DataTable({"searching": false
    });
});

但是,当我单击#coursesTable中的日期标题时,将显示以下输出:

enter image description here

显然这是错误的,因为如果日期按时间顺序排列-最近的日期先-然后06/09/2017应该出现在07/08/2017之前-但这不是它们出现的顺序。

以其他方式(最早的)订购时,会出现相同的错误-即订购仍然不正确:

enter image description here

我不明白为什么会这样?

2 个答案:

答案 0 :(得分:2)

文档确实含糊不清,但是您仍然需要定义列type

columnDefs: [{
  target: 0, //index of column
  type: 'datetime-moment'
}]

作为@DavidCzadilek的注释,您需要使用其他日期格式$.fn.dataTable.moment('D/M/YYYY')(建议的DD/MM/YYYY无效有效)

http://jsfiddle.net/xmhn4wpj/

答案 1 :(得分:1)

根据Moment.js Documentation,尝试将格式更改为此:

$.fn.dataTable.moment( 'DD/MM/YYYY' );

这是一个工作的小提琴:http://jsfiddle.net/4f275sa1/

如@davidkonrad所建议,不需要columnDefs。在这种情况下,“ DD / MM / YYYY”是正确的格式,因为问题使用带前导零的天和月。