Calculer la différence entre deux dates en JavaScript

Utiliser l'objet Date pour faire des calculs, définir un écart en années ou jours, obtenir l'âge d'une personne.

Différence entre deux dates en années

Voici une fonction JavaScript qui effectue le calcul. Elle prend en argument deux dates la seconde étant la plus récente. Il y a un code plus simple que l'on va donner, mais celui-ci donne accès à plus d'informations sur les dates.

Par exemple, l'âge de la tour Eiffel est de ans, nombre que l'on calcule avec la formule suivante: new Number((new Date().getTime() - new Date("31 March 1889").getTime()) / 31536000000).toFixed(0).

function dateDiff(dateold, datenew)
{
  var ynew = datenew.getFullYear();
  var mnew = datenew.getMonth();
  var dnew = datenew.getDate();
  var yold = dateold.getFullYear();
  var mold = dateold.getMonth();
  var dold = dateold.getDate();
  var diff = datenew - dateold;
  if(mold > mnew) diff--;
  else
  {
    if(mold == mnew)
    {
      if(dold > dnew) diff--;
    }
  }
  return diff;
}

Démonstration:

Code de la démonstration...

var today = new Date();
var olday = new Date("1 January 2000");
document.write("Années depuis le 1 janvier 2000: ");
document.write(dateDiff(olday, today));
document.write(" ans.");

Différence en jours

Pour ce cas on convertira les années en jours, la différence est plus simple.

function dayDiff(d1, d2)
{
  d1 = d1.getTime() / 86400000;
  d2 = d2.getTime() / 86400000;
  return new Number(d2 - d1).toFixed(0);
}

Démonstration:

Différences en années, code plus simple

On utilise le code précédent pour la différence en jours, et on divise par 365.

Le code:

function dayDiff(d1, d2)
{
	return new Number((d2.getTime() - d1.getTime()) / 31536000000).toFixed(0);
}

Démonstration:

Calculer l'âge d'une personne

Pour afficher l'âge d'une personne ou d'une chose, on utilise le code précédent, avec sa date de naissance comme premier paramètre, mais sans second paramètre.

Le code:

function age(birthday)
{
  birthday = new Date(birthday);
  return new Number((new Date().getTime() - birthday.getTime()) / 31536000000).toFixed(0);
}

Démonstration:

L'âge de Michael Schumacher est de ans.

Code:

L'âge de Michael Schumacher est de 
<script>document.write(age("3 January 1969"))</script> ans.

Démonstration live