Sorting date in datatable

后端 未结 5 1584
伪装坚强ぢ
伪装坚强ぢ 2020-12-11 17:50

I\'m trying to sort dates in my datatable like DD/MM/YYYY (day, month, year) . I was following https://datatables.net/plug-ins/sorting/ .

but all the

相关标签:
5条回答
  • 2020-12-11 18:05

    Following Plasebo's example works, but in my case the MySQL DATE_FORMAT was sorting on month value, not entire date. My solution was to remove the DATE_FORMAT from my SQL statement.

    $(document).ready(function() {
      $.fn.dataTable.moment('DD/MM/YY');
      $('.happyTable').DataTable({
            "ordering": true,
            "order": [[ 1, "desc" ]],
      });
    });
    

    DATE_FORMAT(date,'%m/%d/%Y')

    "2003-12-30 00:00:00" results in "12/30/2003" but sorts on month value.

    0 讨论(0)
  • 2020-12-11 18:13

    Please refer to this pen: https://codepen.io/arnulfolg/pen/MebVgx

    It uses //cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js and //cdn.datatables.net/plug-ins/1.10.12/sorting/datetime-moment.js for sorting datatable

    To sort the table by default use:

    $.fn.dataTable.moment('DD/MM/YY');
    $('#example').DataTable({ 
           "order": [[ 3, "desc" ]] 
        }); 
    
    0 讨论(0)
  • 2020-12-11 18:18

    Use date-eu sorting plugin to sort dates in the format DD/MM/YY.

    Include the following JS file //cdn.datatables.net/plug-ins/1.10.11/sorting/date-eu.js and use the code below:

    var historiektable = $('#dataTableHistoriek').DataTable({
        "paging" : false,
        "ordering" : true,
        "scrollCollapse" : true,
        "searching" : false,
        "columnDefs" : [{"targets":3, "type":"date-eu"}],
        "bInfo": true
    });
    
    0 讨论(0)
  • 2020-12-11 18:23

    The example of Gyrocode.com seems the most effective. A recent solution says to use Moments.js but it does not work in my case. date-eu is deprecated by DataTables but it works perfectly.

    If you want to sort by date and time using the date format dd/MM/yyyy HH:mm, use date-euro in the same way.

    var table = $('#example-table').DataTable({
        columnDefs: [{ 'targets': 0, type: 'date-euro' }],
        order: [0, 'desc'],
    });
    

    For beginners, add the JS file date-euro to your site. Then add "columnDefs" in your code to indicate which column date-euro should be applied: targets = indicates the column containing the dates to sort, type = indicates the date-euro function to apply to the column. Finally, add "order" to apply the sort you want.

    0 讨论(0)
  • 2020-12-11 18:25

    You can do your own comparator in order to keep the control of how is ordering the dates.

     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));
                }
            });
    

    As you can see in the above comparator you can choose how to parse the date depending on your data.

    And in the columns definition:

      "columnDefs": [
                {
                    targets: [4], type: "ddMmYyyy"
                }]
    
    0 讨论(0)
提交回复
热议问题