jQuery DataTable 日期顺序

Posted

技术标签:

【中文标题】jQuery DataTable 日期顺序【英文标题】:JQuery DataTable Date Order 【发布时间】:2019-11-10 09:34:00 【问题描述】:

我有两个问题。

在我的表中,有一个创建日期列,我正在按此日期排序。不幸的是,它排序为字符串,而不是日期。 (我正在使用 nodejs)。

应该是

21.05.2019

22.04.2109

还有我的代码:

"order": [[0,"desc"],[ 1, "desc" ],[ 7, "desc" ]],

我也试过一个插件

"columnDefs": [                                                
                    
                        "targets": [ 1 ],
                        "visible": true,
                        "searchable": false
                    ,
                    
                        "targets":7,
                        "type": "date-de"
                    ,


<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.19/js/
jquery.dataTables.js" type="text/javascript"></script>

<script src="https://cdn.datatables.net/plug-ins/1.10.19/sorting/date-de.js"
 type="text/javascript"></script>

$(document).ready(function() 
   jQuery.extend(jQuery.fn.dataTableExt.oSort, 
    "extract-date-pre": function(value) 
        var date = $(value, 'span')[0].innerhtml;
        date = date.split('/');
        return Date.parse(date[1] + '/' + date[0] + '/' + date[2])
    ,
    "extract-date-asc": function(a, b) 
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    ,
    "extract-date-desc": function(a, b) 
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    
);

但是没用……

【问题讨论】:

请删除问题并发布 2 个单独的问题。 【参考方案1】:

我可以看到日期是:DD.MM.YYYY 格式。要解析日期,您需要按. 而不是/ 分割。

"extract-date-pre": function(value) 
    var date = $(value, 'span')[0].innerHTML;
    date = date.split('.').reverse().join('-');
    return Date.parse(date);

【讨论】:

谢谢你的回答,但不知何故这些函数没有被调用(我提出了警告但没有显示)。但我按照你说的做了,但效果不佳 console.log(date) var date = $(value, 'span')[0].innerHTML; 之后并检查正在打印的内容 什么都没有,因为这个方法还没有被触发..我不知道为什么..它在document.ready.. 发布dataTable初始化代码。即问题中的$('table').dataTable(...) 我确实喜欢这个,dtVouchers = $('#tblVouchers').DataTable( ...) 不是好主意?【参考方案2】:

请一次只回答一个问题,删除所选部分并用它创建一个新问题。

您的第一个问题:为了使数据表以正确的方式排序日期,您必须在隐藏元素中将日期打印为年-月-日。

例如,我不知道您是如何填充日期表的,但在纯 HTML 中您会执行以下操作:

<tr>
 <td>
   <span style="display:none">2019-05-22</span>
    22-05-2019
 </td>
</tr>

因此,当数据表对列进行排序时,它会选择隐藏范围内的值,现在可以将其排序为简单的字符串。

【讨论】:

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

jquery datatable使用

jQuery DataTable 行顺序

Jquery Datatable - 日期排序不适用于月份(相对于日期的月份)

jQuery DataTable 日期范围搜索

JQuery Datatable 日期列未正确排序

Jquery DataTable列顺序未与固定标题对齐[重复]