首页 > 解决方案 > DataTable 未格式化日期时间

问题描述

我有一个数据表id = 'att_tm_req'。它在格式的第一列中包含日期

2018-09-06 16:04:00 UTC

我想以DD/MM/YYY英文月份名称而不是数字MM表示的格式显示它。

当我将以下内容js应用于我的表时:

document.addEventListener('turbolinks:load', function() {

    $('#att_tm_req').DataTable( {
        columnDefs: [ {
          targets: 0,
          render: $.fn.dataTable.render.moment( 'Do DD MMM YYYYY' )
        } ]
    } );
});

数据表显示:

Invalid date

在曾经是完美数据的每一行上。我已经将moment.js文件添加到我的application.js. 接受任何和所有建议。

标签: javascriptruby-on-railsdatedatetimedatatables

解决方案


问题是moment.js 无法定义您的源日期时间格式

您的日期时间格式为:

YYYY-MM-DD HH:mm:ss UTC

然后您需要使用DataRender Datetime 插件moment.js的两 (2) 个参数,即:

$.fn.dataTable.render.moment(从,到);

你的代码应该像这样替换:

columnDefs: [{
            targets: 1,
            render: $.fn.dataTable.render.moment('YYYY-MM-DD HH:mm:ss UTC','Do DD MMM YYYYY')
            }]

示例演示:

$(document).ready(function(){

	$('#example').DataTable({
	columnDefs: [{
      	targets: 1,
      	render: $.fn.dataTable.render.moment('YYYY-MM-DD HH:mm:ss UTC','Do DD MMM YYYYY')
    	}]
  	});
    
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<script src="//cdn.datatables.net/plug-ins/1.10.19/dataRender/datetime.js"></script>
<link href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel="stylesheet" />
<table id="example" class="display nowrap" width="100%">
  <thead>
    <tr>
      <th>Date Before</th>
      <th>Date After</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>2018-09-06 16:04:00 UTC</td>
      <td>2018-09-06 16:04:00 UTC</td>
    </tr>
  </tbody>
</table>


推荐阅读