代码之家  ›  专栏  ›  技术社区  ›  Andy

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

  •  1
  • Andy  · 技术社区  · 6 年前

    我正试图利用 https://datatables.net/blog/2014-12-18 使DataTables对列中的日期进行排序 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 回复  |  直到 6 年前
        1
  •  3
  •   davidkonrad    6 年前

    文档非常模糊,但是您仍然需要定义列 type :

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

    $.fn.dataTable.moment('D/M/YYYY') (建议 DD/MM/YYYY 工作)

    http://jsfiddle.net/xmhn4wpj/

        2
  •  6
  •   David Czadilek    6 年前

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

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

    这是一把小提琴: http://jsfiddle.net/4f275sa1/

    正如@davidkonrad所建议的,columndef是不需要的。在本例中,“DD/MM/YYYY”是正确的格式,因为问题使用带前导零的天和月。