DataTable 升序排列日期

Posted

技术标签:

【中文标题】DataTable 升序排列日期【英文标题】:DataTable sort ascending dates 【发布时间】:2020-05-07 05:46:24 【问题描述】:

是否可以按日期升序对数据表进行排序?

这是我当前的表 ->

我希望它像日历一样按升序排序,如下所示:

22.01
22.01
...
23.01
...
31.01
01.02

 $(document).ready(function () 
        $('#example').DataTable(
            searching: false,
            paging: false,
            bInfo: false,
            order: [[3, "asc"], [2, "asc"], [1, "asc"]],
            columnDefs: [
                
                    targets: 3,
                    type: 'date',
                    className: 'mdl-data-table__cell--non-numeric'
                
            ]
        );
    );

这是我现在使用的,我也试过type: date-eu

提前致谢!

更新:

我使用了类似的东西,https://datatables.net/plug-ins/sorting/datetime-moment,工作正常。

感谢帮助

【问题讨论】:

我为您创建了一个jsfiddle #Resource。希望对你有用。如果有什么问题请告诉我。 【参考方案1】:

在尝试以下操作之前,您的日期应格式化为 MM DD YYYY。 试试这个:`

let dates = ["01.22.2020", "01.18.2020", "02.02.2020"];
let datesFormatted = [];

dates.forEach(i => datesFormatted.push(new Date(i)));

datesFormatted.sort(function(a, b) 
  if (a > b) 
    return 1;
   else 
    return -1;
  
);

console.info(datesFormatted);

`

【讨论】:

【参考方案2】:

如果您可以获取 ISO yyyy-mm-dd 格式的日期,则可以使用 html5 data-order attribute。在columnDefs 中使用createdCell 将其添加到您的单元格中。

  'columnDefs': [
     
        'targets': 3,
        'createdCell':  function (td, cellData, rowData, row, col) 
           $(td).attr('data-order', row.isodate);
        
     
  ]

【讨论】:

以上是关于DataTable 升序排列日期的主要内容,如果未能解决你的问题,请参考以下文章

如何按日期对 DataTable 列进行排序

DataTable中的数据筛选

Datatable:日期/时间排序插件不排序

DataTable 转 CSV 日期格式

DataTable 日期排序问题

jquery的DataTable按列排序