Comment trouver la différence entre deux dates?
Réponses
Trop de publicités?À l'aide de la Date de l'objet:
var a = new Date(); // Now
var b = new Date(2010, 0, 1, 0, 0, 0, 0); // 2010
var d = (b-a); // difference in milliseconds
Vous pouvez obtenir le nombre de secondes en divisant le millisecondes par 1000, et en arrondissant le nombre:
var seconds = Math.round((b-a)/1000);
Vous pourriez obtenir minutes
en divisant seconds
par 60, hours
en divisant minutes
par 60, days
en divisant hours
par 24, etc.
Vous remarquerez que j'ai fourni quelques valeurs pour le deuxième objet Date. Ces paramètres sont comme suit:
// new Date(year, month, day, hours, minutes, seconds, milliseconds)
Comme indiqué dans les commentaires de cette solution, vous n'avez pas nécessairement besoin de fournir à ces valeurs, sauf s'ils sont nécessaires pour la date que vous voulez représenter.
Utilisez DateJs .
Outil de couteau suisse pour la programmation date-heure javascript!
http://www.datejs.com/
J'ai trouvé cela et il fonctionne très bien pour moi:
Le calcul de la Différence entre Deux Dates
Malheureusement, le calcul d'un intervalle de dates comme des jours, des semaines, ou des mois entre les deux dates n'est pas aussi facile parce que vous ne pouvez pas ajouter des objets ensemble. Pour utiliser un objet Date dans toute sorte de calcul, il faut d'abord récupérer la Date interne de la valeur en millisecondes, qui est stocké comme un grand nombre entier. La fonction de faire, c'est la Date.getTime(). Une fois que les deux Dates ont été convertis, en soustrayant au plus tard à partir de l'un renvoie la différence en millisecondes. L'intervalle désiré peut alors être déterminée en divisant ce nombre par le nombre correspondant de millisecondes. Par exemple, pour obtenir le nombre de jours pour un certain nombre de millisecondes, nous permettrait de diviser par 86,400,000, le nombre de millisecondes dans une journée (1000 x 60 secondes x 60 minutes x 24 heures):
Date.daysBetween = function( date1, date2 ) {
//Get 1 day in milliseconds
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 = date2_ms - date1_ms;
// Convert back to days and return
return Math.round(difference_ms/one_day);
}
//Set the two dates
var y2k = new Date(2000, 0, 1);
var Jan1st2010 = new Date(y2k.getFullYear() + 10, y2k.getMonth(), y2k.getDate());
var today= new Date();
//displays 726
console.log( 'Days since '
+ Jan1st2010.toLocaleDateString() + ': '
+ Date.daysBetween(Jan1st2010, today));
L'arrondi est facultatif, selon que vous voulez une partie de la journée ou pas.
// This is for first date
first = new Date(2010, 03, 08, 15, 30, 10); // Get the first date epoch object
document.write((first.getTime())/1000); // get the actual epoch values
second = new Date(2012, 03, 08, 15, 30, 10); // Get the first date epoch object
document.write((second.getTime())/1000); // get the actual epoch values
diff= second - first ;
one_day_epoch = 24*60*60 ; // calculating one epoch
if ( diff/ one_day_epoch > 365 ) // check , is it exceei
{
alert( 'date is exceeding one year');
}