Bonjour,

J'essaye d'ajouter un mois à une date mais j'ai un fonctionnement étrange pour lequel je n'arrive pas à trouver de solution.

La date en question est le 2 mars 2023. j'ai recherché des fonctions que je vous liste ci-dessous pour le faire mais elles me renvoient toutes un mois en plus moins une heure ou deux.
Le résultat devrait être 2023-04-02T00:00:00.000Z mais j'ai à chaque fois 2023-04-01T23:00:00.000Z ou 2023-04-01T22:00:00.000Z

Ce qui est étrange est que si je prend une date en avril ou mai cela fonctionne.

Je suis un peu perdu, si quelqu'un arrive à m'éclairer sur un problème qui doit être tout simple ?

Voici le code ci-dessous :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function addMonths(date, months) {
  return new Date(date.setMonth(date.getMonth() + months));
}
 
function addMonthsToDate(_date,_noOfMonths) 
 {
   var yearFromDate = _date.getFullYear();
   var monthFromYear = _date.getMonth();
   var dayFromYear = _date.getDate();
   var newDate = new Date(yearFromDate, monthFromYear  + _noOfMonths, dayFromYear);
   return newDate;
 }   
 
function addMonths2(date, months) {
  const dateCopy = new Date(date);
  dateCopy.setMonth(dateCopy.getMonth() + months);
  return dateCopy;
}
 
let testDate = new Date("2023-03-02");
console.log(testDate);
 
console.log("------");
console.log(testDate); 
const result3 = addMonths2(testDate, 1);
console.log(result3); 
 
console.log("------");
console.log(testDate); 
const result1 = addMonths(testDate,1);
console.log(result1);
 
const result2 = addMonthsToDate(testDate,1);
console.log("------");
console.log(testDate); 
console.log(result2);
Le résultat donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
2023-03-02T00:00:00.000Z
------
2023-03-02T00:00:00.000Z
2023-04-01T23:00:00.000Z
------
2023-03-02T00:00:00.000Z
2023-04-01T23:00:00.000Z
------
2023-04-01T23:00:00.000Z
2023-05-01T22:00:00.000Z