我无法在我的网站上使用最终的插件(https://datatables.net/blog/2014-12-18)。
我有一个日期时间列。 JSON中列的输入(称为eisodos)为dd/MM/yyyy HH:mm:ss
(例如31/10/2018 10:03:00
)
SQL Server中的字段为Datetime。在query.php
中,我将其格式化为dd/MM/yyyy HH:mm:ss
并将其编码为JSON。
如果我将其格式化为yyyy/MM/dd HH:mm:ss
,则在Datatable插件中排序还可以,但是我希望它像dd/MM/yyyy HH:mm:ss
一样显示。
我同时包含两个脚本(最新版本):
<script src="bower_components/moment/min/moment.min.js"></script>
和
<script src="bower_components/moment/min/datetime-moment.js"></script>
我检查了所有内容。
排序时得到的结果是这样的:
我已经搜索了两天,但找不到解决方法。
这是我的代码:
$(function ()
{
$.fn.dataTable.moment('dd/MM/yyyy HH:mm:ss');
var table = $('#example').DataTable(
{
ajax: {url: "query.php", dataType: "json", dataSrc: ''},
"columns": [
{"data": "eisodos"}
// I have also tried the following (column render) but nothing changed.
// "render": function(data, type, full) {return moment(data).format('dd/MM/yyyy HH:mm:ss');}
],
"language": {"url": "Greek.json"}
});
});
答案 0 :(得分:0)
在这种情况下,您将必须使用type
方法的参数render
作为列。有关此内容的更多信息,请参阅Columns Render。基本上,此参数使您可以设置列数据的格式以用于不同类型的操作(排序,重复显示等)。对于您的情况,您将需要执行以下操作:
$(function ()
{
$.fn.dataTable.moment('dd/MM/yyyy HH:mm:ss');
var table = $('#example').DataTable(
{
ajax: {url: "query.php", dataType: "json", dataSrc: ''},
"columns": [
{
"data": "eisodos",
"render": function(data, type, full)
{
if (type == 'display')
return moment(data).format('dd/MM/yyyy HH:mm:ss');
else
return moment(data).format('yyyy/MM/dd HH:mm:ss');
}
}],
"language": {"url": "Greek.json"}
});
});
在前面的代码中,当要显示操作时,日期将被格式化为西班牙语,对于其他操作(如排序),将使用英语格式。您也可以参考我之前针对类似问题所做的回答: