Heim  >  Artikel  >  Backend-Entwicklung  >  Wie fügt man in JavaScript genau Monate zu einem Datum hinzu?

Wie fügt man in JavaScript genau Monate zu einem Datum hinzu?

Susan Sarandon
Susan SarandonOriginal
2024-10-28 09:44:29183Durchsuche

How to Accurately Add Months to a Date in JavaScript?

Hinzufügen von Monaten zu einem Datum in JavaScript

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn