Obtenir la liste des mois entre deux dates avec JavaScript

Concept et utilisation

La fonction datesEveryMonth() permet d'itérer une opération sur les mois compris entre deux dates, et d'en obtenir la liste.

Fonction

datesEveryMonth()

Exécute une fonction itérative pour chaque mois compris entre deux dates.

Syntaxe
datesEveryMonth(date_debut, date_fin, iteration);
Paramètres
date_debut(Date)

Le paramètre date_debut de la fonction datesEveryMonth() définit la date de début de l'ensemble de dates.

date_fin(Date)

Le paramètre date_fin de la fonction datesEveryMonth() définit la date de fin de l'ensemble de dates.
Si ce paramètre est omis, la date courante sera utilisée.

iteration(Function)

Le paramètre iteration de la fonction datesEveryMonth() définit une fonction à exécuter itérativement pour chaque mois compris entre les deux dates, qui sera passé en argument.

Exemple d'obtention des mois compris entre deux dates

var date_debut = new Date(1970, 0, 1);
var date_fin = new Date(1970, 2, 1);
var dates = [];

var iteration = function(date) {
  mois.push( date.getFullYear() + '/' + (date.getMonth() + 1) + '/' + date.getDate() );
};

datesEveryMonth(date_debut, date_fin, iteration);

// renvoie : [
//   '1970/1',
//   '1970/2',
//   '1970/3'
// ]

Code source de la fonction

function datesEveryMonth(a, b, f) {
  f = f || function(g) {
    return g;
  };
  var x = new Date(a),
      y = b ? new Date(b) : new Date(),
      u = x.getTime(),
      v = y.getTime(),
      c = u > v ? y : x,
      d = v > v ? u : v;
  do {
    f(new Date(c));
    c.setMonth(c.getMonth() + 1);
  } while (d >= c.getTime());
}
^