Мне удалось отформатировать даты, которые я получаю из своего 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
закладывает основные элементы и форматирование для таблицы данных, чтобы событие могло заполнять таблицу при вызове.
Примечание: Изображение элемента массива является первым в массиве, но оно отображается как пятый элемент изображения (12 марта @ 4:39 AM) в таблице.
Обновление
У меня был больший успех при форматировании данных с помощью moment
следующим образом:
return moment(data).format('MMMM DD YYYY, h:mm:ss')
Похоже, DataTables может теперь правильно сортировать день, однако время все еще не сортируется (самое новое время для дня самое старое в списке для этого дня).