2010-02-11 13 views
0

Bonjour mon problème est quelque peu spécial ou peut-être pas. Cependant, le problème est que j'analyse la plage de dates dans un tableau, où j'ai besoin de trouver la date de début et la date de fin où elles peuvent apparaître dans les plages. Je ne sais pas si je t'ai bien expliqué mais si tu as besoin de plus d'infos, fais le moi savoir.Date de début et de fin sur plusieurs dates

par exemple. [2010-7-11,2010-7-12,2010-7-13, 01/09/2010, 02/09/2010, ....]

maintenant

2010-7-11 début et fin 13.07.2010

2010-9-01 début 02.09.2010 fin

donc, pour les gammes entières dans tableau

Merci à l'avance

+0

Par "plage", voulez-vous dire "jours consécutifs consécutifs"? –

+0

Oui c'est correct – Narayan

+0

bien pour la gamme je veux dire mais à l'intérieur du tableau il pourrait y avoir plusieurs gammes et ainsi de suite je dois représenter le début et la fin pour chaque gamme. – Narayan

Répondre

0

Voici quelque chose de rapide et sale. Il s'attend à ce que le tableau dates soit déjà trié par ordre croissant.

var dates = ["2010-7-11", "2010-7-12", "2010-7-13", "2010-9-01", "2010-9-02"], 
    startDates = [], endDates = [], 
    lastDate = null, date = null; 

for (var i=0, l=dates.length; i<l; ++i) { 
    date = new Date(dates[i].replace(/-/g, "/")); 

    // 
    if (!lastDate) { 
     startDates.push(lastDate = date); 
    } 
    // If the diffrence between the days is greater than the number 
    // of milliseconds in a day, then it is not consecutive 
    else if (date - lastDate > 86400000) { 
     lastDate = null; 
     endDates.push(date); 
    } 
} 
// Close the last range 
endDates.push(date); 

// Result is two symetical arrays 
console.log(startDates, endDates); 
+0

Cela ne fonctionne pas par exemple si nous avons plus de 3 éléments dans le tableau, peu importe les dates sont commandées ou pas l'élément 4 est également désigné comme date de début, même si elle fait partie de la suite ... mais merci quand même – Narayan

Questions connexes