2010-06-23 1 views
0

Je veux trier parComment puis-je changer cela pour trier par le temps aussi?

Année Mois Jour Heure Minute PM/AM (MM/jj/aaaa h mm tt)

Je souhaite modifier ce qui ne dd/mm/aa

Cependant Je ne sais pas comment faire

jQuery.fn.dataTableExt.oSort['uk_date-asc'] = function(a,b) { 
    var ukDatea = a.split('/'); 
    var ukDateb = b.split('/'); 

    var x = (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1; 
    var y = (ukDateb[2] + ukDateb[1] + ukDateb[0]) * 1; 

    return ((x < y) ? -1 : ((x > y) ? 1 : 0)); 
}; 

jQuery.fn.dataTableExt.oSort['uk_date-desc'] = function(a,b) { 
    var ukDatea = a.split('/'); 
    var ukDateb = b.split('/'); 

    var x = (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1; 
    var y = (ukDateb[2] + ukDateb[1] + ukDateb[0]) * 1; 

    return ((x < y) ? 1 : ((x > y) ? -1 : 0)); 
}; 

http://datatables.net/plug-ins/sorting

Modifier

Donc je l'ai trié ascendant mais je ne sais pas comment l'écrire pour descendre.

jQuery.fn.dataTableExt.oSort['datetime-asc'] = function (a, b) 
{ 
    var firstDate = new Date(a); 
    var secondDate = new Date(b); 

    if (firstDate == secondDate) 
    { 
     return 0; 
    } 
    else if (firstDate > secondDate) 
    { 
     return 1; 
    } 
    else 
    { 
     return -1; 
    } 
}; 

jQuery.fn.dataTableExt.oSort['datetime-desc'] = function (a, b) 
{ 
    var firstDate = new Date(a); 
    var secondDate = new Date(b); 

    if (secondDate == firstDate) 
    { 
     return 0; 
    } 
    else if (secondDate > firstDate) 
    { 
     return 1; 
    } 
    else 
    { 
     return -1; 
    } 
}; 
+0

Il suffit de changer la valeur de retour de la version décroissante. 'if (a> b) {return -1; } ' – nil

Répondre

0

Qu'est-ce que le code de démonstration n'est essentiellement ceci:

  1. diviser la chaîne de date.
  2. mettre le tableau de résultats ensemble dans l'ordre du type de tri voulu. par exemple. le résultat du 23/06/10 sera 100623.
  3. obtenir la valeur entière de celui-ci en appliquant l'opérateur mathématique.
  4. Comparez-les.

Le code présente de sérieuses failles si les données utilisateur ont des dates similaires à 04/06/89 et 23/06/10.

Si vos chaînes de date sont dans l'un des the formats that JavaScript recognizes par défaut, je vous suggère de construire deux objets Date en premier. par exemple.

var x = new Date(a); 
var y = new Date(b); 
if (x.getMonth() > y.getMonth() || x.getDate() > y.getDate()) { 
    return 1; 
} else if (x.getMonth() < y.getMonth() || x.getDate() < y.getDate()) { 
    return -1; 
} else { 
    return 0; 
} 

Enrich ce code en faisant référence à l'API JavaScript de Date, vous obtiendrez votre résultat.

+0

est donc 1 plus grand, -1 moins zéro égal? – chobo2

+0

@ chobo2 oui, vous avez raison. – nil

+0

ok voir ma modification. – chobo2

Questions connexes