Search code examples
datefieldadditiondatejs

How can I add several months to a date coming from a date form field?


With DateJS, you'd add e.g. six months to the current date like this:

Date.today().addMonths(6);

However, I need to add 24 months not to today's date, but to a date which a user has typed into a date field. So the today() should in principle be replaced by something like this.getField('begin_date').value.

The result shall be written into another data form field.

I tried hard, but couldn't make it. Can anyone help me out?


Solution

  • Providing the input value is a textual representation of a date, you need to convert it into a Date object at the first place. Then you can work with it as you want.

    DateJS has a pretty smart parse() function which does exactly that, so you'd achieve it like this:

    Date.parse(this.getField('begin_date').value).addMonths(24)
    

    When a specific date format is needed, like DD.MM.YYYY commonly used in Europe, you can use parseExact() and specify the format. Like this:

    Date.parseExact(dateToParse, 'dd.MM.yyyy')  // leading zeroes required; parses 01.04.2014 but not 1.4.2014
    Date.parseExact(dateToParse, 'd.M.yyyy')  // leading zeroes not required; parses both 01.04.2014 and 1.4.2014