jquery — дата сортировки по датам, дд / мм / гггг выпуск

Я использую плагин Jquery под названием DataTables

Это фантастика, однако я не могу правильно отсортировать даты в соответствии с форматом дд / мм / гггг.

Я посмотрел на их форматы поддержки, но ни одно из этих исправлений не работает.

Может кто-нибудь здесь помочь мне, пожалуйста?

48

Решение

Решение jQuery

Вот рабочее решение jQuery.

jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"date-uk-pre": function ( a ) {
var ukDatea = a.split('/');
return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
},

"date-uk-asc": function ( a, b ) {
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
},

"date-uk-desc": function ( a, b ) {
return ((a < b) ? 1 : ((a > b) ? -1 : 0));
}
} );

Добавьте приведенный выше код в скрипт и установите для конкретного столбца значения Date с помощью { "sType": "date-uk" } и другие, как ноль, см. ниже:

$(document).ready(function() {
$('#example').dataTable( {
"aoColumns": [
null,
null,
null,
null,
{ "sType": "date-uk" },
null
]
});
});

Решение CSS

Если вы хотите быстрое решение, вы можете просто добавить фактическое значение DateTime в каждую строку в определенном формате (ГГГГММДД) и сделать его скрытым с помощью CSS, это позволит вам отсортировать этот столбец без каких-либо изменений JavaScript.

Вот рабочее решение CSS

HTML

<td><span class='hide'>YYYYMMDD</span>DD/MM/YYYY</td>

CSS

.hide {
display:none;
}
93

Другие решения

Сортировка по дате — со скрытым элементом

Преобразовать дату в формат YYYYMMDD и добавить к фактическому значению (DD / MM / YYYY) в <td>оберните это в элемент, установите стиль display:none; к элементам. Теперь сортировка по дате будет работать как обычная сортировка. То же самое можно применить к сортировке по времени и дате.

HTML

<table id="data-table">
<tr>
<td><span>YYYYMMDD</span>DD/MM/YYYY</td>
</tr>
</table>

CSS

#data-table span {
display:none;
}
63

Я знаю, что это старый вопрос, и ответы тоже старые. Недавно я наткнулся на простой и понятный способ сортировки дат. Это может быть сделано с помощью HTML5 data-order приписывать <td> элемент.

Вот что я сделал в своем PHP:

<?php
$newdate = date('d M Y', $myDateTime); // Format in which I want to display
$dateOrder = date('Y-m-d', $myDateTime); // Sort Order
?>

<td data-order="<?php echo $dateOrder; ?>" >
<?php echo $newdate; ?>
</td>
27

Пытаться этот плагин.

Как указано Вот вам нужно включить Moment.js и плагин Datatable-момент, затем просто объявите формат даты, которую вы используете.
Плагин будет автоматически определять ваши столбцы даты и сортировать их так, как должно быть.
Для объяснения формата moment.js, проверьте Вот.

Пример:

$(document).ready(function() {
$.fn.dataTable.moment('DD/MM/YYYY HH:mm');
$('#example').DataTable();
});
5

в php или js просто передайте массив и используйте ортогональность, например:

$var[0][0] = "like as u wish, 30/12/2015 or something else";
$var[0][1] = strtotime($your_date_variable);

и, в данных …

$('#data-table-contas_pagar').dataTable({
"columnDefs": [
{"targets":[0],"data": [0],"render": {"_": [0],"sort": [1]}}
]
});
1

Другое решение:
https://datatables.net/blog/2014-12-18

с двумя библиотеками javascript:
//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js
а также
//cdn.datatables.net/plug-ins/1.10.15/sorting/datetime-moment.js

тогда только это:

$ (документ) .ready (function () {

$.fn.dataTable.moment( 'DD/MM/YYYY' );

$('#example').DataTable();

});

1

Если вы не хотите использовать momentum.js или любое другое форматирование даты, вы можете добавить формат даты в миллисекундах в значение даты, чтобы сортировка читалась в соответствии с миллисекундами. И скрыть формат даты в миллисекундах.

Образец кода:

var date = new Date();
var millisecond = Date.parse(date);

HTML

<td>'<span style="display: none;">' + millisecond + "</span>" + date + </td>

Вот и все.

1

Решение Zaheer Ahmed ‘отлично работает, если вам приходится иметь дело с уже сформированной датой в Великобритании.

У меня была проблема с этим решением, потому что я должен был управлять датой в США.

Я понял это с этим крошечным изменением:

function parseDate(a) {
var ukDatea = a.split('/');
return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
}

jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"date-uk-pre": function ( a ) {
return parseDate(a);
},

"date-uk-asc": function ( a, b ) {
a = parseDate(a);
b = parseDate(b);
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
},

"date-uk-desc": function ( a, b ) {
a = parseDate(a);
b = parseDate(b);
return ((a < b) ? 1 : ((a > b) ? -1 : 0));
}
});

Затем следует ваше определение «aoColumns».

0
По вопросам рекламы [email protected]