0

jQuery tablesorterを使用して、次の形式で日付列を並べ替えたいと思います。18:44:12 17/06/2012

どのようにアイデアはありますか?

4

2 に答える 2

0

tablesorter2.0でも同じ問題が発生します。日付dd/mm/yyが982行目で間違っています。

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

最初の問題は、日付テキストをjavascriptDate objectが認識できる形式に解析することです。日付に変換されると、プラグインは日付を数値ソートタイプとして扱います。これがあなたのフォーマットのための実用的なパーサーです。

デモ: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 に答える