jquery tablesorter addParser用于复杂日期

时间:2012-07-04 22:03:54

标签: javascript jquery regex tablesorter

我试着为jquery tablesorter插件编写一个解析器,我真的需要这个...我得到了这个日期格式:dd / mm / yyyy hh:mm:ss am.m. | p.m。并且我无法使用正确的正则表达式使用javascript .match函数...,这是我得到的代码:

      $.tablesorter.addParser({
            id: 'DateParser',
            is: function(s) {
                    return false;
            },
            format: function(s) {
                    var date = s.match(/^(\d{1,2})-(\d{1,2})-(\d{4}) :(\d{1,2}):(\d{1,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 new Date(y, m, d, H, M, S, MS).getTime();
            },
            type: 'numeric'
    });
    $("#tabletosort").tablesorter({
            headers: {
                    0: {
                            sorter: 'DateParser'
                    }
            }
    });

match()调用的结果总是为null ...非常感谢!

1 个答案:

答案 0 :(得分:2)

您当前的正则表达式与dd-mm-yyyy :mm:ss表单中的日期匹配 - 您错过了小时数,上午/下午,并使用-代替/,这就是为什么它是永远不会匹配格式为dd/mm/yyyy hh:mm:ss a.m.|p.m.的日期。更正这些问题会给您以下内容:

/^(\d{1,2})\/(\d{1,2})\/(\d{4}) (\d{1,2}):(\d\d):(\d\d) (a\.m\.|p\.m\.)$/

...然后你测试最后一个子表达式来调整上午或下午的小时数。

(注意:我认为您不希望分钟和秒数允许个位数,因此我已将该部分更改为需要两位数。)