Dans ce fil de discussion, un développeur demande de l'aide pour ajouter deux mois à une date de fin fournie par l'utilisateur.
Pour y parvenir, une fonction personnalisée appelée addMonths() est recommandée :
<code class="js">function addMonths(dateObj, num) { return dateObj.setMonth(dateObj.getMonth() + num); }</code>
Cependant, cette approche simple se heurte à une limite. Par exemple, ajouter un mois au 31 juillet donnerait le 1er octobre au lieu du 30 septembre. Pour résoudre ce problème, une fonction plus nuancée peut être utilisée :
<code class="js">function addMonths(dateObj, num) { var currentMonth = dateObj.getMonth() + dateObj.getFullYear() * 12; dateObj.setMonth(dateObj.getMonth() + num); var diff = dateObj.getMonth() + dateObj.getFullYear() * 12 - currentMonth; if (diff != num) { dateObj.setDate(0); } return dateObj; }</code>
Cette fonction maintient la règle de fin de mois en réinitialisant la date au dernier jour du mois précédent si le mois modifié est incorrect. .
Comme alternative plus simple, une fonction avec un contrôle de roulement de mois simplifié peut être utilisée :
<code class="js">function addMonths(date, months) { var d = date.getDate(); date.setMonth(date.getMonth() + +months); if (date.getDate() != d) { date.setDate(0); } return date; }</code>
Cette approche garantit également que le comportement de fin de mois est préservé tout en fournissant une mise en œuvre simplifiée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!