Comment calculer le nombre de jours entre deux dates

J’ai deux dates d’entrée à prendre à partir du contrôle du sélecteur de date. J’ai sélectionné la date de début 2/2/2012 et la date de fin 2/7/2012. J’ai écrit le code suivant pour cela.

Je devrais obtenir un résultat de 6 mais je reçois 5.

function SetDays(invoker) { var start = $find('').get_value(); var end = $find('').get_value(); var oneDay=1000 * 60 * 60 * 24; var difference_ms = Math.abs(end.getTime() - start.getTime()) var diffValue = Math.round(difference_ms / oneDay); } 

Quelqu’un peut-il me dire comment je peux obtenir la différence exacte?

http://momentjs.com/ ou https://date-fns.org/

De Moments docs:

 var a = moment([2007, 0, 29]); var b = moment([2007, 0, 28]); a.diff(b, 'days') // =1 

ou d’inclure le début:

 a.diff(b, 'days')+1 // =2 

Les battements jouent avec les horodatages et les fuseaux horaires manuellement.

Selon votre cas d’utilisation spécifique, vous pouvez soit

  1. Utilisez a/b.startOf('day') et / ou a/b.endOf('day') pour forcer le diff à être inclusif ou exclusif aux «extrémités» (comme suggéré par @kotpal dans les commentaires).
  2. Définissez le troisième argument true pour obtenir un diff à virgule flottante que vous pouvez ensuite Math.floor selon vos Math.floor , Math.ceil , Math.ceil ou Math.round .
  3. L’option 2 peut également être réalisée en obtenant des 'seconds' au lieu de 'days' , puis en divisant par 24*60*60 .

Essayer:

 //Difference in days var diff = Math.floor(( start - end ) / 86400000); alert(diff); 

Si vous utilisez moment.js, vous pouvez le faire facilement.

 var start = moment("2018-03-10", "YYYY-MM-DD"); var end = moment("2018-03-15", "YYYY-MM-DD"); //Difference in number of days moment.duration(start.diff(end)).asDays(); //Difference in number of weeks moment.duration(start.diff(end)).asWeeks(); 

Si vous voulez trouver la différence entre une date donnée et la date actuelle en nombre de jours (en ignorant le temps), assurez-vous de supprimer l’heure du moment object de la date actuelle comme ci-dessous

 moment().startOf('day') 

Pour trouver la différence entre une date donnée et la date actuelle en nombre de jours

 var given = moment("2018-03-10", "YYYY-MM-DD"); var current = moment().startOf('day'); //Difference in number of days moment.duration(given.diff(current)).asDays(); 

Essayez ceci en utilisant moment.js (il est assez facile de calculer les opérations de date en javascript)

firstDate.diff (secondDate, ‘days’, false); // true | false pour la valeur de fraction

Le résultat vous donnera le nombre de jours en nombre entier.

Vous pouvez aussi utiliser ce code: moment (“yourDateHere”, “AAAA-MM-JJ”). FromNow (). Cela calculera la différence entre aujourd’hui et votre date de livraison.