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 未格式化日期时间的主要内容,如果未能解决你的问题,请参考以下文章
编辑列日期格式后不显示过滤日期 - Laravel Yajra Datatable
数据表未按 dd/MM/yyyy 格式的日期排序 Angular
在 jquery 数据表中显示之前将 json 日期格式化为 mm/dd/yy 格式
Datatable 正在从我为 Windows 10 构建的 VB.NET 应用程序中的 SQL 查询结果中接收 (01\dd\yyyy) 格式的日期