JQuery数据表中带有时间戳排序问题的日期

Posted

技术标签:

【中文标题】JQuery数据表中带有时间戳排序问题的日期【英文标题】:Date With Timestamp Sorting Issue in JQuery Datatables 【发布时间】:2017-07-22 15:39:58 【问题描述】:

我正在使用 jquery 数据表插件来列出我的 java spring MVC Web 应用程序中的数据。表中的一个字段包含带有时间戳的日期。在那,我一直在尝试对数据元素进行排序。当我尝试使用时间戳对包含日期的字段中的元素进行排序时,排序不起作用。

我正在使用以下 jquery 进行数据表初始化

 $('.swcm-dt-basic').dataTable( 
        "responsive": true,
        "order": \[\],
        "language": 
            "paginate": 
              "previous": '<i class="swcm-psi-arrow-left"></i>',
              "next": '<i class="swcm-psi-arrow-right"></i>'
            
        
     );

下图显示了问题

【问题讨论】:

【参考方案1】:

解决方案 1

对包含可排序时间戳的td 元素使用data-order 属性。例如:

<td data-order="2016-12-02 21:28:41">12/02/2016 21:28:41</td>

有关代码和演示,请参阅this example。

解决方案 2

使用sorting plugins 就像datetime-moment 用于任何日期格式或date-euro 如果您的日期是DD/MM/YYYY HH:MM:SS 格式。

如果您的日期在MM/DD/YYYY HH:MM:SS,您可以使用以下代码:

jQuery.extend( jQuery.fn.dataTableExt.oSort, 
    "date-us-pre": function ( a ) 
        var x;
 
        if ( $.trim(a) !== '' ) 
            var frDatea = $.trim(a).split(' ');
            var frTimea = (undefined != frDatea[1]) ? frDatea[1].split(':') : [00,00,00];
            var frDatea2 = frDatea[0].split('/');
            x = (frDatea2[2] + frDatea2[0] + frDatea2[1] + frTimea[0] + frTimea[1] + frTimea[2]) * 1;
        
        else 
            x = Infinity;
        

        return x;
    ,
 
    "date-us-asc": function ( a, b ) 
        return a - b;
    ,
 
    "date-us-desc": function ( a, b ) 
        return b - a;
    
 );

$(document).ready(function()
   $('#example').dataTable( 
      columnDefs: [
          type: 'date-us', targets: 0 
      ]
    );

【讨论】:

【参考方案2】:

如果您只是在寻找一个简单的解决方案来对该列进行排序,我不确定您的问题,请使用 yyyymmdd hh:mm:ss 格式。 但是,如果您特别关注 mm/dd/yyyy hh:mm:ss 格式,请尝试以下建议: https://***.com/a/25359251/3483409 https://***.com/a/33568433/3483409

【讨论】:

【参考方案3】:

你可以使用这样的东西。

$('#example').dataTable( 
     columnDefs: [
        type: 'de_datetime', targets: 0 ,
        type: 'de_date', targets: 1 
     ]
   );

欲了解更多信息,您可以访问https://datatables.net/plug-ins/sorting/date-de

【讨论】:

以上是关于JQuery数据表中带有时间戳排序问题的日期的主要内容,如果未能解决你的问题,请参考以下文章

Prisma 中带有时区列的时间戳

PostgreSQL中带/不带时区的时间戳之间的差异

带有时间戳的 postgreSQL 排序

jquery 时间戳和日期时间转化

vue.js怎样将时间戳转化为日期格式

在bigquery中转换整个表的时间戳