javascriptdate-format

How to add weeks to date using javascript?


Javascript definitely isn't my strongest point. I've been attempting this for a couple of hours now and seem to be getting stuck with date formatting somewhere.

I have a form where a user selected a date (dd/mm/yyyy) and then this date will be taken and 2 weeks will be added to it and then date will be copied to another form field.

My latest attempt below isn't even adding a date yet just copying the selected date in one form field to another, if I select '03/02/2012', it outputs 'Fri Mar 02 2012 00:00:00 GMT+0000 (GMT Standard Time)', so its outputting in American format as well as the full date. How to I get it to out put in the same format and add 2 weeks?

function LicenceToOccupy(acceptCompletionDate)
{
    var date1 = new Date(acceptCompletionDate);
    document.frmAccept.acceptLicence.value = date1;

}

Solution

  • You can do this :

    const numWeeks = 2;
    const now = new Date();
    now.setDate(now.getDate() + numWeeks * 7);
    

    or as a function

    const addWeeksToDate = (dateObj,numberOfWeeks) => {
      dateObj.setDate(dateObj.getDate()+ numberOfWeeks * 7);
      return dateObj;
    }
    
    const numberOfWeeks = 2 
    console.log(addWeeksToDate(new Date(), 2).toISOString());
    

    You can see the fiddle here.

    According to the documentation in MDN

    The setDate() method sets the day of the Date object relative to the beginning of the currently set month.