0

I'm trying to add 3 days to a random date but instead it seems as though I'm adding a month.

var d = new Date(2021, 9, 14);
var currentTime = d.getTime();
var daysToAdd = 3;
var secondsInADay = 86400;
var d = new Date(currentTime + daysToAdd * secondsInADay);
var year = d.getFullYear();
var month = ("0" + (d.getMonth() + 1)).slice(-2);
var day = ("0" + d.getDate()).slice(-2);
console.log('result is:' + year + '-' + month + '-' + day);
DecPK
  • 24,537
  • 6
  • 26
  • 42
tony
  • 33
  • 5

2 Answers2

0

Try this :

var d = new Date(2021, 9, 14) ;
    var daysToAdd = 3;
    
    Date.prototype.addDays = function(days) {
        var date = new Date(this.valueOf());
        date.setDate(date.getDate() + days);
        return date;
    }
    console.log(date.addDays(daysToAdd)); 
abhishek92
  • 61
  • 4
0

You're multiplying by the number of seconds in a day, but you need to multiply by the number of milliseconds in a day, as shown below:

var d = new Date(2021, 9, 14);
var currentTime = d.getTime();
var daysToAdd = 3;
var milisecondsInADay = 86400000;
var d = new Date(currentTime + daysToAdd * milisecondsInADay);
var year = d.getFullYear();
var month = ("0" + (d.getMonth() + 1)).slice(-2);
var day = ("0" + d.getDate()).slice(-2);
console.log('result is:' + year + '-' + month + '-' + day);
Joshua Craven
  • 4,407
  • 1
  • 31
  • 39