tablesorter按日期/日期格式排序dd.mm.yyyy - dd.mm.yyyy

时间:2015-02-19 10:21:12

标签: jquery sorting tablesorter

我有下表:

    <?php 
    $reqSQL = "SELECT * FROM data_cursanti , clients WHERE  start_course > DATE_SUB(now(), INTERVAL 12 MONTH) ORDER BY data_cursanti.name ASC ";
    $result = mysqli_query($conexiune, $reqSQL) or die("Error: " . mysqli_error($conexiune)); // sql query for results than the table
    $counter = 1; // for rows counting
    echo '<table id="users" class="tablesorter">
    <thead>
    <tr>
    <th width="3%">No.</th>
    <th width="15%">Name</th>
    <th width="10%">Company</th>
    <th width="7%">Course</th>
    <th width="10%">Course Period</th>
    </tr>
    </thead>
    <tbody>'
    while ($row = mysqli_fetch_array($result)) {
    $date1 = date('d.m.Y', strtotime($row['start_course']));
    $date2 = date('d.m.Y', strtotime($rand['end_course']));
    echo
    '<tr>
    <td width="3%">'.$counter.'</td>
    <td width="15%">'.$row['name'].'</td>
    <td width="10%">'.$row['company_name'].'</td>
    <td width="7%">'.$row['course_type'].'</td>
    <td width="10%">'.$date1.' - '.$date2.'</td>
    </tr>'
    $counter++;
    } //end while loop
    echo '</tbody>
    </table>'; //close table

并使用以下解析器(稍微修改一下:How to sort date with jquery tablesorter which is in format 'dd/mm/yyyy - dd/mm/yyyy')for tablesorter按我的课程期间列排序(该列使用日期格式dd.mm.yyyy - dd.mm.yyyy):

$(function() {

    $.tablesorter.addParser({
        id: "date-range",
        is: function(){
            return false;
        },
        format: function(s, table, cell) {

            var dates = s.replace(/(\d{1,2})[\/\.](\d{1,2})[\/\.](\d{4})/g, "$2/$1/$3").split(' - '),
                parsed = [];
            if (dates.length) {
                $.each(dates, function(i,d){
                    var v = new Date(d);
                    parsed.push($.type(v) === 'date' ? v.getTime() : d);
                });
            }
            return parsed.length ? parsed.join('') : s;
        },
        parsed : true,
        type: "text"
    });

// and calling the parser after this script like this: 


    $(function() {
$("#users")
.tablesorter({widthFixed: true, widgets: ['zebra'],  headers: {0: {sorter: false}, 4 : { sorter: 'date-range' }, {sortForce: [[0,0]]})
.tablesorterPager({container: $("#pager"), size: 20});
});

问题是表格按第一个日期的dd(day)部分排序,而不是按照我希望的那个月排序!有任何想法吗?我究竟做错了什么?有人可以修改我的代码,按照第一个日期的mm(月)值对表格数据进行排序吗?我对javascript几乎一无所知...谢谢!

LE:我也尝试在第一个答案中使用mottie提供的解决方案,但是当我添加4:{sorter:&#39; date-range&#时,表格会崩溃并且不会对任何内容进行排序39;脚本中的一段代码。

1 个答案:

答案 0 :(得分:0)

问题是这个问题中的日期是用句点分隔的,另一个问题的正则表达式是使用正则表达式,它只查找正斜杠或空格(demo)。

此正则表达式适用于由&#34; -&#34;,&#34; /&#34;,&#34; {{分隔的mm-dd-yyyy日期1}}&#34;或&#34; .&#34; (空间)。

此外,var dates = s.replace(/(\d{1,2})[-./\s](\d{1,2})[-./\s](\d{4})/g, "$2/$1/$3").split(' - ') 设置需要定位最后一行:

sorter