Adding days to Date in javascript / typescript gives completely wrong date

21,820

You have a problem with types. If days is 14, then it will yield 16th August correctly. However, if days is "14", then it will yield 2nd of March.

Solution:

  addDays(date: Date, days: number): Date {
    console.log('adding ' + days + ' days');
    console.log(date);
    date.setDate(date.getDate() + parseInt(days));
    console.log(date);
    return date;
  }
Share:
21,820
ganjan
Author by

ganjan

Updated on August 03, 2020

Comments

  • ganjan
    ganjan almost 4 years

    I have this very simple code, and it works sometimes but other times it gives the complete wrong date:

      addDays(date: Date, days: number): Date {
        console.log('adding ' + days + ' days');
        console.log(date);
        date.setDate(date.getDate() + days);
        console.log(date);
        return date;
      }
    

    Here is an example of the output:

    Works!

    adding 7 days
    error-chart.component.ts:118 Tue Aug 02 2016 00:00:00 GMT+0200 (Vest-Europa (sommertid))
    error-chart.component.ts:120 Tue Aug 09 2016 00:00:00 GMT+0200 (Vest-Europa (sommertid))
    

    Stops working:

    adding 14 days
    error-chart.component.ts:118 Tue Aug 02 2016 00:00:00 GMT+0200 (Vest-Europa (sommertid))
    error-chart.component.ts:120 Thu Mar 02 2017 00:00:00 GMT+0100 (Vest-Europa (normaltid))
    

    somehow jumps 2 years

    adding 14 days
    error-chart.component.ts:118 Thu Jul 07 2016 00:00:00 GMT+0200 (Vest-Europa (sommertid))
    error-chart.component.ts:120 Thu Jun 14 2018 00:00:00 GMT+0200 (Vest-Europa (sommertid))
    

    now 4 years!

    adding 14 days
    error-chart.component.ts:118 Thu Jun 14 2018 00:00:00 GMT+0200 (Vest-Europa (sommertid))
    error-chart.component.ts:120 Thu Apr 14 2022 00:00:00 GMT+0200 (Vest-Europa (sommertid))