calculer le nombre de jours dans le sélecteur de plage javascript

Je sais que cette question a déjà été posée, mais je n’ai rien trouvé de semblable à ce que j’essaie de faire. J’utilise jQuery Datepicker http://keith-wood.name/datepick.html et j’utilise la plage avec 2 calendriers. Dans mon application, j’ai un service pour lequel je facture un prix d’un jour. Ce que je veux faire, c’est offrir à l’utilisateur final une plage de dates pour choisir le nombre de jours qu’il souhaite acheter et lui indiquer le total. Pour commencer, je veux juste savoir comment calculer le nombre de jours sélectionné dans la plage.

Voici mon code:

 
$('#range2Picker').datepick({ date1 = new Date(date1); date2 = new Date(date2); rangeSelect: true, monthsToShow: 2, changeMonth: false, minDate: +3, onClose: function(date1, date2) { var timediff = date2 - date1; alert('Number of days are: ' + timediff); } });

Les réponses impliquant Math.ceil sont en proie à des problèmes autour de l’heure d’été (heure avancée). Par exemple, aux États-Unis:

 Math.ceil((new Date("November 4, 2013").getTime() - new Date("November 2, 2013").getTime()) / (1000 * 3600 * 24)); //=> 3 

Math.floor aurait le même problème au spring:

 Math.floor((new Date("March 11, 2013").getTime() - new Date("March 9, 2013").getTime()) / (1000 * 3600 * 24)); // 1 

Mieux serait Math.round:

 var days = Math.round( (1*date2 - 1*date1) / 86400000, 0); 

cela vous donne la différence en millis, convertissez-les en jours

 var timeDiff = Math.abs(date2.getTime() - date1.getTime()); var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); alert(diffDays)​;