如何按日期降序对数据表进行排序

     2023-05-07     68

关键词:

【中文标题】如何按日期降序对数据表进行排序【英文标题】:How to sort datatables with date in descending order 【发布时间】:2016-10-15 07:33:02 【问题描述】:

我希望使用数据表显示记录,默认排序基于我的行之一,日期和时间按降序排列。请帮助我为此编辑 jquery 结构

【问题讨论】:

您希望我们帮助编辑的 jQuery 结构在哪里? 顺便说一句,据我所知,关于日期和时间排序,数据表处理排序过程的方式应该有一些限制 我已经在我的项目中做到了。日期格式应为 YYYY-MM-DD。排序 *"order": [[ 3, "desc" ]] * 并隐藏 td,不显示任何内容。 【参考方案1】:

最简单的方法是在该列的每个TD标签的日期前添加一个隐藏的时间戳,例如:

<td class="sorting_1">
    <span style="display:none;">1547022615</span>09/01/2019  09:30
</td>

使用默认字符串排序,时间戳会按照您想要的方式对列进行排序,并且在浏览器中呈现时不会显示。

【讨论】:

嗨,琼,我试过这个方法,但它不起作用。它假定1547022615 是字符串而不是数字。有什么想法吗? 对于极端情况,您只需要用零填充它,以便正确比较 unix 字符串,对吧,@Sam? @mickmackusa 好主意。用零填充应该可以工作。唯一需要注意的是有一个预定的长度(即字符串的大小),但它可以工作。感谢分享! 非常感谢,它运行良好,干杯! 不添加新字段,而是在现有日期字段中添加:&lt;td data-sort="@item.Created.ToString("yyyyMMddHHmmssffff")"&gt;【参考方案2】:

我有同样的问题。我使用 date-eu 排序插件以 DD/MM/YY 格式对日期进行排序,并包含以下 JS 文件:

<script src="//cdn.datatables.net/plug-ins/1.10.11/sorting/date-eu.js" type="text/javascript"></script>

这对我有用。

$('#exemple').DataTable(
    "order": [[ 3, "desc" ]], //or asc 
    "columnDefs" : ["targets":3, "type":"date-eu"],
);

另请阅读有关 *** 的这篇文章:Sorting date in datatable

【讨论】:

【参考方案3】:

我得到了日期排序的解决方案。只需将类型添加为“日期”并在目标中,您已通过数据表选项传递列号(计数从 0 开始)。并使用列号和格式类型设置“顺序”。见下面代码,

columnDefs: [  type: 'date', 'targets': [4]  ],
order: [[ 4, 'desc' ]]

【讨论】:

也可以直接在列中使用。 columns: [ "data": "MyDateField", "type":"date" ] 你能用这个解决方案定义你的日期格式吗?例如。 'dd-mm-yyyy'。【参考方案4】:

请参考此笔: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" ]] 
    ); 

【讨论】:

【参考方案5】:

只需在 "data": "MyDateField", "type":"date" 等列中直接添加"type":"date"即可。

【讨论】:

【参考方案6】:
<td class="sorting_1">
    <span style="display:none;">201909010930</span>09/01/2019  09:30
</td>

以 yyyyMMddHHmm 格式化您的日期。这将是您的可排序时间戳。然后使用 display none 隐藏格式化的日期。这其实是对joan16v答案的进一步解释

【讨论】:

【参考方案7】:

我知道这是一个旧线程。但你基本上可以使用 "aaSorting"

$('#exemple').DataTable(

    "aaSorting": [[3,'desc']],
);

【讨论】:

order: [[ 3, 'desc' ]] 自 DataTables v1.10 起。【参考方案8】:

//在这里工作代码

$('#table').DataTable(
   columnDefs: [  type: 'date', 'targets': [3]  ],
   order: [[ 3, 'desc' ]],          
);

【讨论】:

【参考方案9】:

这就是我的答案:

<td data-order=<fmt:formatDate pattern = "yyyy-MM-dd" value = "$myObject.myDate" />>$myObject.myDate</td>

更多详情,请参见 html5 部分:https://datatables.net/manual/data/

【讨论】:

这个我也用过,解决方法是按数据顺序将日期时间字符串设置为yyyy-MM-dd。谢谢!【参考方案10】:

我可以实现的完美解决方案是:

    如果您在 PHP 文件中使用 AJAX 生成数据,只需按以下方式添加日期:
$rows[] =
    [
    "name" => $name,
    "date" => [
        "display" => $date, // Ex: '31.12.2020'
        "timestamp" => strtotime($date),    // Timestamp value for ordering, Ex: 1609372800
    ]
]
    然后行将像这样输出到 JSON:

"name": "Vasya Pupkin",
"date": 
        "display": "31.12.2020",
        "timestamp": "1609372800"
    ,

    通过编辑您的 JavaScript TadaTables 对象“日期”列来完成,如下所示:

    "data": "date",
    render: 
        _: 'display',
        sort: 'timestamp'
    
,
    就是这样!现在带有日期的列已完美排序。

【讨论】:

【参考方案11】:

这个问题已经很老了,答案中提到的大多数插件都已被弃用或停止工作(我都试过了)。

这是目前有效的。

添加扩展:

$.fn.dataTable.ext.order['date-time'] = function (settings, col) 
    return this.api().column(col,  order: 'index' ).nodes().map(function (td, i) 
        var val = $(td).text().trim();    // Get datetime string from <td>
        return moment(val, "DD/MM/YYYY hh:mm:ss a").format("X"); 
    );

然后,对于您的数据表:

$('#example').DataTable(
    "columns": [
        null,
        null,
        null,
         "orderDataType": "date-time" , // date-time is a custom key created in the above ext
        null,
        null,
        null,
        null,
        null,
        null
     ]
);

更新: 您可以使用以下方法简化上述内容:

$('#example').DataTable(
    "columnDefs": [
         "orderDataType": "date-time", "targets": [3] 
    ]
);

"targets": [] 数组可以包含要应用日期时间排序的所有列的索引(来自)。

注意:我使用了moment.js,您可以使用任何其他方法来创建有效的日期/日期时间对象。另外,使用的参考是dom-sort插件,因此,同样的方法也可以用于对具有复杂dom结构的列进行排序。

参考:https://datatables.net/examples/plug-ins/dom_sort

【讨论】:

【参考方案12】:

试试这个,它对我有用

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
<script src="https://cdn.datatables.net/plug-ins/1.10.21/sorting/datetime-moment.js"></script>
<script>
    $(document).ready(function () 
        $.fn.dataTable.moment( 'DD/MM/YYYY HH:mm' );
        $('#example').DataTable("order": [[ 3, "desc" ]]);
    );
</script>

【讨论】:

【参考方案13】:
            Here the code:


           jQuery.extend(jQuery.fn.dataTableExt.oSort, 
             "date-uk-pre": function ( a ) 
              var ukDatea = a.split('-');
              return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
           ,


            "date-uk-asc": function ( a, b ) 
                return ((a < b) ? -1 : ((a > b) ? 1 : 0));
             ,

            "date-uk-desc": function ( a, b ) 
               return ((a < b) ? 1 : ((a > b) ? -1 : 0));
              
            ); 

【讨论】:

【参考方案14】:

如前所述,date-eu.js 库可以工作,但对我来说,它需要对代码进行修改:

jQuery.extend( jQuery.fn.dataTableExt.oSort, 
"date-eu-pre": function ( date ) 
    date = date.replace(" ", "");

    if ( !date ) 
        return 0;
    

    var year;
    var eu_date = date.split(/[\.\-\/]/);


    if((eu_date[0] == undefined) || (eu_date[1] == undefined) || (eu_date[2] == undefined) )
        eu_date[0] = 0;
        eu_date[1] = 0;
        eu_date[2] = 0;
    

    //console.log(eu_date);

    /*year (optional)*/
    if ( eu_date[2] ) 
        year = eu_date[2];
    
    else 
        year = 0;
    

    /*month*/
    var month = eu_date[1];
    if ( month.length == 1 ) 
        month = 0+month;
    

    /*day*/
    var day = eu_date[0];
    if ( day.length == 1 ) 
        day = 0+day;
    

    return (year + month + day) * 1;
,

"date-eu-asc": function ( a, b ) 
    return ((a < b) ? -1 : ((a > b) ? 1 : 0));
,

"date-eu-desc": function ( a, b ) 
    return ((a < b) ? 1 : ((a > b) ? -1 : 0));

);

【讨论】:

【参考方案15】:

这对我有用。不要忘记在您的代码中添加时刻。我正在使用节点,所以这是我的导入。

npm i 时刻 -S

从“时刻”导入时刻;

$('#example').DataTable(
    "order": [[ 3, "desc" ]], //or asc 
    "columnDefs" : [
       
          targets: [3],
          render: function (data, type) 
             if (data !== null) 
                var wrapper = moment(new Date(data));
                return wrapper.format("MM/DD/YYYY h:mm:ss A");
             
          
       
    ],
);

所有功劳归功于 Ryan Besko。在这里找到答案:https://forums.asp.net/t/2154454.aspx?DataTables+Date+Time+sorting+DD+MM+YYYY+HH+mm+a

【讨论】:

请注意 Moment.js 现在是 legacy project 并且不再接收更新。【参考方案16】:

您可以通过在记录中添加数据集属性来进行排序。详情点击here。

示例::

<td data-search="21st November 2016 21/11/2016" data-order="1479686400">
    21st November 2016
</td>

为了显示从初始状态排序的数据,定义一个列来查找排序。例如::

$('#dataTable').DataTable(
    "order": [[10, 'desc']],
);

谢谢,

快乐编码:)

【讨论】:

【参考方案17】:

数据表中的默认排序:

$(document).ready(function()  
    $('#example').DataTable( 
        "order": [[ 3, "desc" ]] 
    ); 
);

您可以使用 asc 进行升序。 3 表示,第 4 列将被默认排序。

【讨论】:

我用过这个。它适用于正常数据。它不适用于日期

如何按日期降序对 NSDate 进行排序,但在该日期内时间升序?

】如何按日期降序对NSDate进行排序,但在该日期内时间升序?【英文标题】:HowtosortNSDatebydatedescending,butwithtimeascendingwithinthatdate?【发布时间】:2012-07-1907:30:33【问题描述】:我使用NSFetchedResultsController和NSSortDescriptor成功排序到... 查看详情

如何在 Reactjs 中按升序或降序对数据进行排序?

】如何在Reactjs中按升序或降序对数据进行排序?【英文标题】:HowtosortdatainascendingordescendingorderinReactjs?【发布时间】:2018-10-0915:02:12【问题描述】:我在我的显示组件中导入了产品数据。对于JSON中的每个产品,我使用.map()来显... 查看详情

如何按降序对列表视图项进行排序

】如何按降序对列表视图项进行排序【英文标题】:Howtosortlistviewitemsindescendingorder【发布时间】:2013-08-1319:04:38【问题描述】:所以我有一个列表视图,我想在其中按降序对NumberOfRecords进行排序。我有一个自定义数组适配器,但... 查看详情

如何按降序对 JSON 数组元素进行排序? [复制]

】如何按降序对JSON数组元素进行排序?[复制]【英文标题】:HowtosortJSONarrayelementsindescendingorder?[duplicate]【发布时间】:2019-06-0616:42:53【问题描述】:在我的index.html中,我按以下顺序从服务器接收数据:[id:1,keyOne:valueOne,keyTwo:value... 查看详情

java示例代码_按字符串格式的升序和降序对日期数组列表进行排序

java示例代码_按字符串格式的升序和降序对日期数组列表进行排序 查看详情

如何按升序和降序对列进行排序?

】如何按升序和降序对列进行排序?【英文标题】:howsortcolumnsinascendinganddescendingorder?【发布时间】:2020-11-0902:46:18【问题描述】:我使用对象数组创建了表,现在我不明白我们如何通过单击reactjs中的列名按升序和降序对表进行... 查看详情

如何按降序对列表进行排序

】如何按降序对列表进行排序【英文标题】:Howtosortthelistbydescendingorder【发布时间】:2022-01-0605:54:27【问题描述】:publicclassItemspublicstringNameget;set;publicintIdget;set;publicList<string>SubItemsget;set;上面是我的课。在我的代码中的某处... 查看详情

如何按降序对 ListView.builder 进行排序?

】如何按降序对ListView.builder进行排序?【英文标题】:HowtosortListView.builderindecreasingorder?【发布时间】:2021-07-2607:54:02【问题描述】:我想按降序排列View.builder你能帮我吗?ListView.builder(itemCount:..,itemBuilder:(BuildContextcontext,inti)..)... 查看详情

如何根据php中日期列的降序对mysql结果数组进行排序?

】如何根据php中日期列的降序对mysql结果数组进行排序?【英文标题】:Howtosortthemysqlresultarrayindescendingorderonthebasesofdatecolumninphp?【发布时间】:2017-02-0522:19:25【问题描述】:我不是英语母语,并且是***上的新手,所以如果我做错... 查看详情

按成员降序对多个对象进行排序?

】按成员降序对多个对象进行排序?【英文标题】:SortingMultipleObjectsByMemberinDescendingOrder?【发布时间】:2013-05-3112:23:14【问题描述】:我看过以下问题:按对象的属性对对象向量进行排序这似乎与我的情况非常相关。我有少量Pla... 查看详情

如何按降序对 ArrayList<Long> 进行排序?

】如何按降序对ArrayList<Long>进行排序?【英文标题】:HowtosortArrayList<Long>indecreasingorder?【发布时间】:2011-08-1904:26:20【问题描述】:如何在Java中对ArrayList&lt;Long&gt;进行降序排序?【问题讨论】:【参考方案1】:... 查看详情

Firebase 按降序对数据进行排序。 (只排序了一半。)

】Firebase按降序对数据进行排序。(只排序了一半。)【英文标题】:Firebasesortingdataindescendingorder.(onlyhalfsorted.)【发布时间】:2018-05-2101:47:16【问题描述】:我正在尝试按值将我的列表视图排序为降序。我试过使用Collections.reverse... 查看详情

如何按整数值降序对该表进行排序?

】如何按整数值降序对该表进行排序?【英文标题】:Howtosortthistablebydescendingintegervalue?【发布时间】:2017-01-1904:31:14【问题描述】:表定义是这样的:createtabletest_1(match_idvarchar2(30),tstimestamp);match_id为整数格式。[A|B],如1.A、1.B、... 查看详情

如何按第一位数字的降序对整数数组进行排序? [关闭]

】如何按第一位数字的降序对整数数组进行排序?[关闭]【英文标题】:Howtosortanarrayofintegersindescendingorderofthefirstdigit?[closed]【发布时间】:2014-10-1404:22:18【问题描述】:如何在Java中对整数列表进行排序以产生以下输出?输入:[7... 查看详情

MySQLi + PHP 按日期和 ID 降序排序

】MySQLi+PHP按日期和ID降序排序【英文标题】:MySQLi+PHPsortbydateandIDindescendingorder【发布时间】:2017-12-3119:21:10【问题描述】:我正在寻找一个MySQL查询,它将按日期按降序对项目进行排序。如果它找到两个或多个具有相同日期的行... 查看详情

按升序或降序对数字或字母进行通用排序

...DescendingOrder【发布时间】:2019-07-1716:55:32【问题描述】:如何对只能包含字母或数字的通用数组进行排序?假设我有一个仅包含数字的通用数组列表,并且可以使用轻松排序publicvoidsortAsc(refT[]obj)dodidSwap=false;for(inti= 查看详情

如何按值按降序对哈希进行排序并在 ruby​​ 中输出哈希?

】如何按值按降序对哈希进行排序并在ruby​​中输出哈希?【英文标题】:Howtosortahashbyvalueindescendingorderandoutputahashinruby?【发布时间】:2012-10-2408:14:37【问题描述】:output.sort_by|k,v|v.reverse对于键h="a"=>1,"c"=>3,"b"=>2,"d"=>4=&g... 查看详情

按降序对单链表进行排序

...descendingorder【发布时间】:2016-10-1619:57:23【问题描述】:如何按分数降序显示此链接列表?当我在我的GUI中显示它以按顶部的最高分排序,然后降到底部的最低分时,我需要它吗?另外,我想知道是否有办法将条目限制为仅10个... 查看详情