Trier la date en Javascript
j'ai récupéré à partir de la requête ajax un flux de nouvelles. Dans cet objet, il y a une date dans ce format:
Wed, 22 May 2013 08:00:00 GMT
je voudrais trier tous les objets par jour. Est-il possible de le faire en utilisant Javascript ?
mise à JOUR
en utilisant ce morceau de code ça marche très bien !
array.sort(function(a,b){
var c = new Date(a.date);
var d = new Date(b.date);
return c-d;
});
3 réponses
1) vous ne pouvez pas trier les objets. L'ordre des clés de l'objet est arbitraire.
2) Si vous voulez trier un tableau par date( et ils sont déjà obects date), faites ce qui suit:
array.sort ( function (date1, date2){
return date1 - date2
});
si vous devez d'abord les convertir en objets date, faites ce qui suit (en suivant la structure des données selon votre commentaire ci-dessous):
array.sort ( function (a, b){
return new Date(a.pubDate) - new Date(b.pubDate);
});
sorting dates ascending or descending
times = ["01-09-2013", "01-09-2013", "27-08-2013", "27-08-2013", "28-08-2013", "28-08-2013", "28-08-2013", "28-08-2013", "29-08-2013", "29-08-2013", "30-08-2013", "30-08-2013", "31-08-2013", "31-08-2013"]
function dmyOrdA(a,b){ return myDate(a) - myDate(b);}
function dmyOrdD(a,b){ return myDate(b) - myDate(a);}
function myDate(s){var a=s.split(/-|\//); return new Date(a[2],a[1]-1,a[0]);}
times.sort(dmyOrdA);
console.log(times)
vous pouvez également utiliser un underscore / lodash sortBy
voici l'utilisation de underscore js pour trier la date:
var log = [{date: '2016-01-16T05:23:38+00:00', other: 'sample'},
{date: '2016-01-13T05:23:38+00:00',other: 'sample'},
{date: '2016-01-15T11:23:38+00:00', other: 'sample'}];
console.log(_.sortBy(log, 'date'));