This is a short post about how we can manage a common situation with our propper implementation.
Despite the JavaScript Date
warts, it’s straightforward to add days to a date in JavaScript.
Today we have a ton of libraries and external modules to work with dates. It's overwhelming!
While it would be very easy to reach for moment.js
or another date manipulation library (date-fns
, luxon
, dayjs
) to do something as simple as adding days to a Date in JavaScript, writing a short helper function might just be easier.
A utility function that creates a Date copy
function addDays(date, days) {
const copy = new Date(Number(date))
copy.setDate(date.getDate() + days)
return copy
}
const date = new Date();
const newDate = addDays(date, 10);
Mutating the Date directly
const date = new Date();
date.setDate(date.getDate() + 10);
Gotchas and examples
This actually works as expected, eg. the month rolls over.
const d = new Date('2019-04-14');
const monthRollsOver = addDays(myDate, 31);
console.log(monthsRollOver)
// 2019-05-15
Of course, if you’re already using a data manipulation library elsewhere in your code, you should leverage that since you’re already paying the download/parse cost.
Top comments (1)
Good for mentioning rollover, otherwise I would live in fear, not using
.getDate()
(Well, I can totally rely on.getTime()
or+Date
.)