DataTable 未格式化日期时间

Posted

技术标签:

【中文标题】DataTable 未格式化日期时间【英文标题】:DataTable not formatting datetime 【发布时间】:2019-12-15 04:25:21 【问题描述】:

我有一个带有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。 接受任何和所有建议。

【问题讨论】:

【参考方案1】:

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

您的日期时间格式是:

YYYY-MM-DD HH:mm:ss UTC

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

$.fn.dataTable.render.moment(from, to );

你的代码应该这样替换:

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" >
  <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>

【讨论】:

工作就像一个魅力!

以上是关于DataTable 未格式化日期时间的主要内容,如果未能解决你的问题,请参考以下文章

DataTable 转 CSV 日期格式

编辑列日期格式后不显示过滤日期 - Laravel Yajra Datatable

数据表未按 dd/MM/yyyy 格式的日期排序 Angular

如何将DataTable中的日期格式format

在 jquery 数据表中显示之前将 json 日期格式化为 mm/dd/yy 格式

Datatable 正在从我为 Windows 10 构建的 VB.NET 应用程序中的 SQL 查询结果中接收 (01\dd\yyyy) 格式的日期