How to sort by Date with DataTables jquery plugin?

后端 未结 13 2599
隐瞒了意图╮
隐瞒了意图╮ 2020-12-02 11:02

I am using the datatables jquery plugin and want to sorty by dates.

I know they got a plugin but I can\'t find where to actually download it from

http://data

13条回答
  •  北海茫月
    2020-12-02 11:38

    Just in case someone is having trouble where they have blank spaces either in the date values or in cells, you will have to handle those bits. Sometimes an empty space is not handled by trim function coming from html it's like "$nbsp;". If you don't handle these, your sorting will not work properly and will break where ever there is a blank space.

    I got this bit of code from jquery extensions here too and changed it a little bit to suit my requirement. You should do the same:) cheers!

    function trim(str) {
        str = str.replace(/^\s+/, '');
        for (var i = str.length - 1; i >= 0; i--) {
            if (/\S/.test(str.charAt(i))) {
                str = str.substring(0, i + 1);
                break;
            }
        }
        return str;
    }
    
    jQuery.fn.dataTableExt.oSort['uk-date-time-asc'] = function(a, b) {
        if (trim(a) != '' && a!=" ") {
            if (a.indexOf(' ') == -1) {
                var frDatea = trim(a).split(' ');
                var frDatea2 = frDatea[0].split('/');
                var x = (frDatea2[2] + frDatea2[1] + frDatea2[0]) * 1;
            }
            else {
                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 = 10000000; // = l'an 1000 ...
        }
    
        if (trim(b) != '' && b!=" ") {
            if (b.indexOf(' ') == -1) {
                var frDateb = trim(b).split(' ');
                frDateb = frDateb[0].split('/');
                var y = (frDateb[2] + frDateb[1] + frDateb[0]) * 1;
            }
            else {
                var frDateb = trim(b).split(' ');
                var frTimeb = frDateb[1].split(':');
                frDateb = frDateb[0].split('/');
                var y = (frDateb[2] + frDateb[1] + frDateb[0] + frTimeb[0] + frTimeb[1] + frTimeb[2]) * 1;
            }
        } else {
            var y = 10000000;
        }
        var z = ((x < y) ? -1 : ((x > y) ? 1 : 0));
        return z;
    };
    
    jQuery.fn.dataTableExt.oSort['uk-date-time-desc'] = function(a, b) {
        if (trim(a) != '' && a!=" ") {
            if (a.indexOf(' ') == -1) {
                var frDatea = trim(a).split(' ');
                var frDatea2 = frDatea[0].split('/');
                var x = (frDatea2[2] + frDatea2[1] + frDatea2[0]) * 1;
            }
            else {
                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 = 10000000;
        }
    
        if (trim(b) != '' && b!=" ") {
            if (b.indexOf(' ') == -1) {
                var frDateb = trim(b).split(' ');
                frDateb = frDateb[0].split('/');
                var y = (frDateb[2] + frDateb[1] + frDateb[0]) * 1;
            }
            else {
                var frDateb = trim(b).split(' ');
                var frTimeb = frDateb[1].split(':');
                frDateb = frDateb[0].split('/');
                var y = (frDateb[2] + frDateb[1] + frDateb[0] + frTimeb[0] + frTimeb[1] + frTimeb[2]) * 1;
            }
        } else {
            var y = 10000000;
        }
    
        var z = ((x < y) ? 1 : ((x > y) ? -1 : 0));
        return z;
    };
    

提交回复
热议问题