1

该表有几列,包括包含自定义日期格式(dd-mm-yyyy HH:MM:SS)的第一列,例如

   <tr>
        <td>14-05-2012 13:57:04</td>
        <td>MTUPTTC01V4.3_E2E-LoadBalancer-1336992891.jtl</td>
        <td>14-05-2012 13:10:03</td>
        <td>14-05-2012 13:56:38</td>
        <td>00:46:35</td>
        <td>400</td>
        <td>152328</td>
        <td>2494</td>
        <td>1.64%</td>
        <td><a href="2012-05-14_13_56_52">Results</a></td>
    </tr>

我正在使用以下自定义解析器,但它似乎不起作用。

   $.tablesorter.addParser({
                id: 'jmeterDate',
                is: function(s) {
                        return false;
                },
                format: function(s) {
                        var date = s.match(/^(\d{2})-(\d{2})-(\d{4})[ ](\d{2}):(\d{2}):(\d{2})$/);
                        var d = date[1];
                        var m = date[2];
                        var y = date[3];
                        var H = date[4];
                        var M = date[5];
                        var S = date[6];
                        var MS = 0;
                        //return '' + y + m + d;
                        return new Date(y, m, d, H, M, S, MS).getTime();
                },
                type: 'Numeric'
        });
        $("#tablesorter-table").tablesorter({
                headers: {
                        0: {
                                sorter: 'jmeterDate'
                        }
                }
        });

有关完整示例,请参见以下链接

http://jsfiddle.net/Ese5A/1/

4

1 回答 1

1

我已经解决了这个问题,它不是 jQuery 或自定义表格排序器,它实际上是表格内容本身。某些日期的长度不是正则表达式所期望的,例如

04-05-2012 13:7:1

注意 7 和 1,下面的正则表达式需要至少 2 位数字。

s.match(/^(\d{2})-(\d{2})-(\d{4}) :(\d{2}):(\d{2})$/)

使固定:

s.match(/^(\d{1,2})-(\d{1,2})-(\d{4}) :(\d{1,2}):(\d{1, 2})$/)

它现在接受长度为 1 或 2 的数字

于 2012-05-15T11:25:45.570 回答