Я знаю, что были некоторые вопросы об этом, но я, может казаться, не решаю свою проблему.
Я загружаю .csv файл в tablesorter, но один из моих столбцов является датами (23 декабря 2009). Но они сортируют как 2 декабря, 23 декабря, 3 декабря, 31 декабря
Кто-либо знает решение? Вы видите проблему здесь, это - таблица внизу. Большое спасибо заранее!
-
таблица width = "871" граница = "0" cellpadding = "0" cellspacing = "1" класс = "tablesorter" идентификатор = "tablesorter-демонстрация">
$row = 1; $handle = fopen("csv/canadatransactions.csv",
"r"); в то время как (($data = fgetcsv ($handle, 1000, ","))! == ЛОЖЬ) {$num = количество ($data); $row ++;
if ($row == 2) { echo "\n
\n"; echo " \n\n"; } else { echo "" . $data[1] . "\n";//называют эхо "". $data [0]. "\n";//эхо символа "". $data [2]. "\n";//покупают, продают эхо "". $data [3]. "\n";//эхо даты "". $data [4]. "\n";//совместно использует эхо "". $data [5]. "\n";//ценовое эхо "". $data [6]. "\n";//денежная стоимость
echo "
\n"; echo " " . $data[1] . " \n"; echo "" . $data[0] . " \n"; echo "" . $data[2] . " \n"; echo "" . $data[3] . " \n"; echo "" . $data[4] . " \n"; echo "C$ " . $data[5] . " \n"; echo "C$ " . $data[6] . " \n"; $transactions = $row - 3; } } fclose($handle); ?>
Сортировка основана на буквенно-цифровых (ASCII) значениях, а не на значениях данных (Он также поставит ноябрь перед октябрем). Вам нужно задать вопрос, чтобы интерпретировать каждую ячейку как значение даты, а затем отсортировать их соответствующим образом. Если их встроенное определение типа не работает, необходимо форсировать тип данных. Дополнительную информацию см. в http://www.terminally-incoherent.com/blog/2008/09/29/jquery-tablesorter-list-of-builtin-parserssorters/.
.Вы должны указать тип колонки. В противном случае она будет отсортирована как текст. Это можно сделать с помощью параметра сортировки сортировщик
:
<table>
<thead>
<tr>
<th>Id</th>
... other columns ....
<th class="{sorter: 'isoDate'}">Date</th>
</tr>
</thead>
<tbody>
... table body ....
Я не уверен, что isoDate
является сортировщиком, который вы должны использовать, но в табличном сортировщике есть еще два сортировщика: usLongDate
и shortDate
. Вы можете попробовать, какой из них выполнит эту работу.
Если ни один из вариантов сортировки по умолчанию не работает, попробуйте использовать пользовательский парсер и преобразовать дату в эквивалентное ей миллисекундное представление для сортировки.
$.tablesorter.addParser({
// set a unique id
id: 'dateMS',
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s) {
var d = Date.parse(s);
if (isNaN(d)) {
return -1;
}
return d;
},
// set type, either numeric or text
type: 'numeric'
});
$(function() {
$("table").tablesorter({
headers: {
6: {
sorter:'dateMS'
}
}
});
});