Javascript date de différence

J'ai regardé: Obtenez une différence entre 2 dates en javascript?

Et je ne peux toujours pas travailler.

var difference = data.List[0].EndDate - Math.round(new Date().getTime()/1000.0) * 1000; var daysRemaining = Math.floor(difference / 1000 / 60 / 60 / 24); var hoursRemaining = Math.floor(difference / 1000 / 60 / 60 - (24 * daysRemaining)); var minutesRemaining = Math.floor(difference / 1000 / 60 - (24 * 60 * daysRemaining) - (60 * hoursRemaining)); var secondsRemaining = Math.floor(difference / 1000 - (24 * 60 * 60 * daysRemaining) - (60 * 60 * hoursRemaining) - (60 * minutesRemaining)); 

Data.List [0] .EndDate est un numéro UTC (comme: 1291427809310 ( http://www.epochter.com/ )) qui sera toujours plus tard que la date actuelle.

 function days_between(date1, date2) { // The number of milliseconds in one day var ONE_DAY = 1000 * 60 * 60 * 24 // Convert both dates to milliseconds var date1_ms = date1.getTime() var date2_ms = date2.getTime() // Calculate the difference in milliseconds var difference_ms = Math.abs(date1_ms - date2_ms) // Convert back to days and return return Math.round(difference_ms/ONE_DAY) } 

http://www.mcfedries.com/javascript/daysbetween.asp

Je crois maintenant que c'est la meilleure solution:

http://momentjs.com/

Vous dites que l'horodatage UTC est "2004-09-16T23: 59: 58.75"?

Donc vous faites essentiellement

 var x = "2004-09-16T23:59:58.75" - 123456 

Maintenant que vous avez précisé que ce qui précède ne s'applique pas. Votre nouveau problème est le nombre de millisecondes dans le passé, alors lorsque vous effectuez le calcul de la différence, vous obtenez un nombre négatif. Vous voulez probablement échanger la commande.

 var difference = new Date().getTime()-data.List[0].EndDate; 

Si EndDate est en millisecondes, et getTime () renvoie des millisecondes, pourquoi divisez-le par 1000 uniquement pour le multiplier par 1000 dans la même ligne? Et si vous avez besoin d'une seconde précision pour tout le reste du code, pourquoi travailler en millisecondes? Commencez avec un certain nombre de secondes pour simplifier tous vos calculs:

 var difference = Math.round((data.List[0].EndDate - new Date().getTime()) / 1000); 

J'ai écrit un composant qui fait exactement ceci si vous ne souhaitez pas utiliser une bibliothèque complète comme moment.js. Il peut également produire la différence dans n'importe quelle unité de temps dont vous avez besoin (jours, semaines, mois, minutes, heures, etc.).

Voici comment cela fonctionnerait:

 var date1 = date.getTime(); var date2 = data.List[0].EndDate; var millisecondsRemaining = dateDiff(date1, date2, 'milliseconds'); var secondsRemaining = dateDiff(date1, date2, 'seconds'); var minutesRemaining = dateDiff(date1, date2, 'minutes'); var hoursRemaining = dateDiff(date1, date2, 'hours'); var daysRemaining = dateDiff(date1, date2, 'days'); var weeksRemaining = dateDiff(date1, date2, 'weeks'); var monthsRemaining = dateDiff(date1, date2, 'months'); var yearsRemaining = dateDiff(date1, date2, 'years'); 

Pour utiliser la méthode dateDiff () , vous pouvez simplement importer le composant.