In diesem Thread sucht ein Entwickler nach Hilfe beim Hinzufügen von zwei Monaten zu einem vom Benutzer bereitgestellten Enddatum.
Um dies zu erreichen, wird eine benutzerdefinierte Funktion namens addMonths() empfohlen:
<code class="js">function addMonths(dateObj, num) { return dateObj.setMonth(dateObj.getMonth() + num); }</code>
Dieser unkomplizierte Ansatz stößt jedoch auf eine Einschränkung. Würde man zum Beispiel einen Monat zum 31. Juli hinzufügen, ergäbe sich der 1. Oktober statt des 30. Septembers. Um dieses Problem zu lösen, kann eine differenziertere Funktion eingesetzt werden:
<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>
Diese Funktion behält die Monatsendregel bei, indem sie das Datum auf den letzten Tag des Vormonats zurücksetzt, wenn der geänderte Monat falsch ist .
Als einfachere Alternative kann eine Funktion mit einer optimierten Monats-Rollover-Prüfung verwendet werden:
<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>
Dieser Ansatz stellt auch sicher, dass das Verhalten am Monatsende erhalten bleibt Bereitstellung einer vereinfachten Implementierung.
Das obige ist der detaillierte Inhalt vonWie fügt man in JavaScript genau Monate zu einem Datum hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!