我已经成功格式化了从API返回的日期,但是在DataTables中未对它们进行正确排序。这是我的JS代码:
function GetActivityLog(nodeId, domainName, computerName) {
$.ajax({
url: **removed**,
success: function (json) {
table = $('#tblActivityLogs').DataTable({
"order": [[0, "desc"]],
});
table.clear();
table.rows.add(json).draw();
$('#nodeName').html(computerName);
}
})
}
$(document).ready(function () {
$('#tblActivityLogs').DataTable({
"order": [[0, "desc"]],
"autoWidth": false,
columnDefs: [
{ targets: 0, class: 'dt-body-nowrap', title: 'Date/Time', data: 'dateTime' , render: function (data) { return moment(data).format('MMMM Do YYYY, h:mm:ss a') } },
{ targets: 1, title: 'Type', data: 'entryType' },
{ targets: 2, title: 'Event ID', data: 'eventId' },
{ targets: 3, class: 'dt-body-wrap', title: 'Message', data: 'message' }
]
});
})
最简单地剪几张我所见的照片:
如您所见,降序日期在旧日期,最近日期和旧日期之间切换。即使在同一天,时间也混乱了。这是原始数组的片段,其中包含未格式化的日期:
GetActivityLog
是通过onClick
事件调用的,但是据我了解,$(document).ready
代码为数据表奠定了基础元素和格式,因此该事件可以在调用时填充表。
注意:数组项的图像是数组中的第一项,但在表中该图像(3月12日@ 4:39 AM)中显示为第五项。
我在用moment
格式化数据方面取得了更好的成功:
return moment(data).format('MMMM DD YYYY, h:mm:ss')
看起来DataTables现在可以正确地对日期进行排序,但是时间仍然没有排序(该日期的最新时间是该列表中最旧的时间)。