146 votes

Min/Max de dates dans un tableau ?

Comment puis-je connaître la date min et la date max à partir d'un tableau de dates ? Actuellement, je crée un tableau comme celui-ci :

 var dates = [];
dates.push(new Date("2011/06/25"))
dates.push(new Date("2011/06/26"))
dates.push(new Date("2011/06/27"))
dates.push(new Date("2011/06/28"))

Y a-t-il une fonction intégrée pour le faire ou dois-je écrire la mienne ?

169voto

Andrew D. Points 3555

Le code est testé avec IE, FF, Chrome et fonctionne correctement :

 var dates=[];
dates.push(new Date("2011/06/25"))
dates.push(new Date("2011/06/26"))
dates.push(new Date("2011/06/27"))
dates.push(new Date("2011/06/28"))
var maxDate=new Date(Math.max.apply(null,dates));
var minDate=new Date(Math.min.apply(null,dates));

45voto

lvd Points 327

Identique à appliquer, maintenant avec propagation :

 const maxDate = new Date(Math.max(...dates));

(pourrait être un commentaire sur la meilleure réponse)

42voto

Mark Amery Points 4705

_.min et _.max fonctionnent sur des tableaux de dates ; utilisez-les si vous utilisez Lodash ou Underscore, et envisagez d'utiliser Lodash (qui fournit de nombreuses fonctions utilitaires comme celles-ci) si vous ne l'êtes pas déjà.

Par example,

 _.min([
    new Date('2015-05-08T00:07:19Z'),
    new Date('2015-04-08T00:07:19Z'),
    new Date('2015-06-08T00:07:19Z')
])

renverra la deuxième date du tableau (car c'est la première).

15voto

Ricardo Tomasi Points 13398

Étant donné que les dates sont converties en époque UNIX (nombres), vous pouvez utiliser Math.max/min pour les trouver :

 var maxDate = Math.max.apply(null, dates)
// convert back to date object
maxDate = new Date(maxDate)

(testé en chrome uniquement, mais devrait fonctionner dans la plupart des navigateurs)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X