Trying to add 3 days in Milliseconds to current Date
var dateObj = new Date();
var val = dateObj.getTime();
//86400 * 1000 * 3 Each day is 86400 seconds
var days = 259200000;
val = val + days;
dateObj.setMilliseconds(val);
val = dateObj.getMonth() + 1 + "/" + dateObj.getDate() + "/" + dateObj.getFullYear();
alert(val);
I am trying to take the current date, add three days of milliseconds to it, and have the date stamp show 3 days later from the current. For example - if today is 10/09/2012 then I would like it to say 10/12/2012.
this method is not working, I am getting the months and days way off. Any suggestions?
Solution 1:
To add time, get the current date then add, as milliseconds, the specific amount of time, then create a new date with the value:
// get the current date & time (as milliseconds since Epoch)
const currentTimeAsMs = Date.now();
// Add 3 days to the current date & time
// I'd suggest using the calculated static value instead of doing inline math
// I did it this way to simply show where the number came from
const adjustedTimeAsMs = currentTimeAsMs + (1000 * 60 * 60 * 24 * 3);
// create a new Date object, using the adjusted time
const adjustedDateObj = new Date(adjustedTimeAsMs);
To explain this further; the reason dataObj.setMilliseconds()
doesn't work is because it sets the dateobj's milliseconds PROPERTY to the specified value(a value between 0 and 999). It does not set, as milliseconds, the date of the object.
// assume this returns a date where milliseconds is 0
dateObj = new Date();
dateObj.setMilliseconds(5);
console.log(dateObj.getMilliseconds()); // 5
// due to the set value being over 999, the engine assumes 0
dateObj.setMilliseconds(5000);
console.log(dateObj.getMilliseconds()); // 0
References:Date.now()
new Date()
Date.setMilliseconds()
Solution 2:
Try this:
var dateObj = new Date(Date.now() + 86400000 * 3);
Dates in JavaScript are accurate to the millisecond, so 1000
is 1 second.
There are 60 seconds in a minute, 60 minutes in an hour, and 24 hours in a day.
Therefore, one day is: 1000 * 60 * 60 * 24
, which is 86400000
milliseconds.
Date.now()
returns the current timestamp, accurate to the millisecond.
We pass that timestamp, with the added 3 days worth of milliseconds to new Date()
, which, when called with a number, creates a Date
object from the provided timestamp.
Solution 3:
If you need to make date computations in javascript, use moment.js:
moment().add(3, 'days').calendar();
Solution 4:
Use this code
var dateObj = new Date();
var val = dateObj.getTime();
//86400 * 1000 * 3 Each day is 86400 seconds
var days = 259200000;
val = val + days;
dateObj = new Date(val); // ********important*********//
val = dateObj.getMonth() + 1 + "/" + dateObj.getDate() + "/" + dateObj.getFullYear();
alert(val);