Tablesorter - Проблема дат

Я знаю, что были некоторые вопросы об этом, но я, может казаться, не решаю свою проблему.

Я загружаю .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 "" . $data[1] .

"\n";//называют эхо "". $data [0]. "\n";//эхо символа "". $data [2]. "\n";//покупают, продают эхо "". $data [3]. "\n";//эхо даты "". $data [4]. "\n";//совместно использует эхо "". $data [5]. "\n";//ценовое эхо "". $data [6]. "\n";//денежная стоимость

                   echo "\n\n";
               }

               else
               {
                   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);
?>
            

5
задан Mike K. 24 December 2009 в 14:08
поделиться

3 ответа

Сортировка основана на буквенно-цифровых (ASCII) значениях, а не на значениях данных (Он также поставит ноябрь перед октябрем). Вам нужно задать вопрос, чтобы интерпретировать каждую ячейку как значение даты, а затем отсортировать их соответствующим образом. Если их встроенное определение типа не работает, необходимо форсировать тип данных. Дополнительную информацию см. в http://www.terminally-incoherent.com/blog/2008/09/29/jquery-tablesorter-list-of-builtin-parserssorters/.

.
6
ответ дан 14 December 2019 в 08:52
поделиться

Вы должны указать тип колонки. В противном случае она будет отсортирована как текст. Это можно сделать с помощью параметра сортировки сортировщик:

<table>
<thead>
    <tr>
        <th>Id</th>
        ... other columns ....
        <th class="{sorter: 'isoDate'}">Date</th>
</tr>           
</thead>
<tbody>
... table body ....

Я не уверен, что isoDate является сортировщиком, который вы должны использовать, но в табличном сортировщике есть еще два сортировщика: usLongDate и shortDate. Вы можете попробовать, какой из них выполнит эту работу.

.
1
ответ дан 14 December 2019 в 08:52
поделиться

Если ни один из вариантов сортировки по умолчанию не работает, попробуйте использовать пользовательский парсер и преобразовать дату в эквивалентное ей миллисекундное представление для сортировки.

$.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' 
            } 
        } 
    }); 
}); 
0
ответ дан 14 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: