81 votes

Différence entre les dates en JavaScript

Comment trouver la différence entre deux dates?

122voto

Jonathan Sampson Points 121800

À 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.

7voto

this. __curious_geek Points 23728

Utilisez DateJs .

Outil de couteau suisse pour la programmation date-heure javascript!

http://www.datejs.com/

4voto

Adrian P. Points 379

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.

Référence

3voto

Pavunkumar Points 1945
    // 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');
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X