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
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). true
pour obtenir un diff à virgule flottante que vous pouvez ensuite Math.floor
selon vos Math.floor
, Math.ceil
, Math.ceil
ou Math.round
. '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.