数据表订购列的英国日期和时间

时间:2013-09-23 11:47:31

标签: javascript regex jquery-datatables

我正在尝试通过具有英国日期和时间的DataTables插件对表中的列进行排序:21/09/2013 11:15

使用Ronan Guilloux的代码:

jQuery.extend( jQuery.fn.dataTableExt.oSort, {
    "uk_date-pre": function ( a ) {
        if ($.trim(a) != '') {
            var frDatea = $.trim(a).split(' ');
            var frTimea = frDatea[1].split(':');
            var frDatea2 = frDatea[0].split('/');
            var x = (frDatea2[2] + frDatea2[1] + frDatea2[0] + frTimea[0] + frTimea[1] + frTimea[2]) * 1;
        } else {
            var x = 10000000000000; // = l'an 1000 ...
        }

        return x;
    },

    "uk_date-asc": function ( a, b ) {
        return a - b;
    },

    "uk_date-desc": function ( a, b ) {
        return b - a;
    }
} );

并且我已添加此代码以自动检测它,因此我不必设置它适用于哪个列:

jQuery.fn.dataTableExt.aTypes.unshift(
    function ( sData )
    {
        if (sData !== null && sData.match(/(0[1-9]|[12]\d|3[0-2])\/(0[1-9]|1[0-2])\/\d{4} (0[1-9]|1\d|2[0-3]):(0[1-9]|[1-5]\d)$/))
        {
            //console.log(sData);
            return 'uk_date';
        }
        return null;
    }
);

我遇到的问题是,虽然我可以看到正则表达式与字符串匹配但它不会调用'uk_date-pre','uk_date-asc'或'uk_date-desc'可以解释为什么它不起作用?

2 个答案:

答案 0 :(得分:0)

玩了一段时间之后我不得不放弃了regEx,我只是将其添加到设置中:

aoColumnDefs: [{ "sType": "datetime-uk", "aTargets": [whichCol] }]

然后我将whichCol var设置为null或列号(如果它在需要此UK排序的页面上)。

答案 1 :(得分:0)

对于任何对此绊脚石的人。

如果您进行更改,来自Ronan Guilloux的代码将按预期工作:

var x = (frDatea2[2] + frDatea2[1] + frDatea2[0] + frTimea[0] + frTimea[1] + frTimea[2]) * 1;

收件人:

var x = (frDatea2[2] + frDatea2[1] + frDatea2[0] + frTimea[0] + frTimea[1]) * 1;

原因是我们正在处理“ 21/09/2013 11:15”

var frTimea = frDatea[1].split(':');

将仅填充frTimea [0]和frTimea [1] ...