Problem
function addOneMonth(date) {
  const newDate = new Date(date);
  newDate.setMonth(newDate.getMonth() + 1);
  if (newDate.getDate() !== date.getDate()) {
    newDate.setDate(0);
  }
  return newDate;
}

const today = new Date(2024, 10, 17); // October 17, 2024
const oneMonthFromToday = addOneMonth(today);

console.log(oneMonthFromToday);
Solution

Months are 0 indexed in JavaScript. So, new Date(2024, 10, 17) is actually November 17, 2024. When we add one month to that date, we get December 17, 2024.

function addOneMonth(date) {
  const newDate = new Date(date);
  newDate.setMonth(newDate.getMonth() + 1);
  if (newDate.getDate() !== date.getDate()) {
    newDate.setDate(0);
  }
  return newDate;
}

const today = new Date(2024, 9, 17); // October 17, 2024
const oneMonthFromToday = addOneMonth(today);

console.log(oneMonthFromToday);