0

我想使用 jQuery tablesorter 对具有以下格式的日期列进行排序:18:44:12 17/06/2012

有什么想法吗?

4

2 回答 2

0

我对 tablesorter 2.0 有同样的问题。第 982 行的日期 dd/mm/yy 错误...

s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, "$1/$2/$3");

错了,正确的是

s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, "$3/$2/$1");

我的 ts.addParser({id: "shortDate"... 是:

ts.addParser({
        id: "shortDate",
        is: function (s) {
            return /\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s);
        }, format: function (s, table) {
            var c = table.config;
            s = s.replace(/\-/g, "/");
            if (c.dateFormat == "us") {
                // reformat the string in ISO format
                s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$1/$2");
            } else if (c.dateFormat == "uk") {
                // reformat the string in ISO format
                s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$2/$1");
            } else if (c.dateFormat == "dd/mm/yy" || c.dateFormat == "dd-mm-yy") {
                s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, "$3/$2/$1");
            } else if (c.dateFormat == "dd/mm/yyyy" || c.dateFormat == "dd-mm-yyyy") {
                s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$2/$1");
            }
            return $.tablesorter.formatFloat(new Date(s).getTime());
        }, type: "numeric"
    });

我添加了 dd/mm/yyyy 案例。至于日期,我不知道... :(

您必须将 dateFormat: "dd/mm/yyyy" 作为参数。

于 2012-06-19T07:56:39.230 回答
0

Date object第一个问题是将您的日期文本解析为 javascript可以识别的格式。一旦转换为日期,插件会将日期视为数字排序类型。这是您格式的有效解析器。

演示:http: //jsfiddle.net/H9u7C/1/

$.tablesorter.addParser({

    // set a unique id
    id: 'changeToDate',
    is: function(s) {
        // return false so this parser is not auto detected
        return false;
    },

    format: function(s) {
        var a = $.trim(s).split(' ');
        var time = a[0];
        var dateParts = a[1].split('/');
        var dateText = [dateParts[1], dateParts[0], dateParts[2]].join('/') + ' ' + time;
        var dateObj = new Date(dateText);
        return dateObj;

    },

    type: 'numeric'
});

用法如插件站点上的自定义解析器演示中所述

http://tablesorter.com/docs/example-parsers.html

于 2012-06-17T16:18:17.343 回答