Add Week(s) to a Date in JavaScript or Node.js

When interacting with dates in JavaScript you sometimes want to provide shortcuts. Like adding a week to a given date. Or moving today’s meeting two weeks into the future (keeping the day and time).

That’s what this tutorial is about: adding a single week or multiple weeks to a given date in JavaScript.

Node.js Series Overview

Add Weeks(s) to a Date in JavaScript

JavaScript comes with a Date class providing useful date handling. You can customize a date instance by adding the units you need. A date instance comes with .setX methods to customize it.

In the case of adding weeks to a date in JavaScript you’re basically adding seven days for each week. That means adding a single week to a JavaScript date is moving the date seven days into the future. Adding two weeks means adding 14 days to the date.

Use the date.setDate() method adding days to a JavaScript date. You can append the desired number of days by summing the existing date’s days plus the “future” days.

Here’s a sample function adding a given number of weeks to a Date. We’re using the “now” date illustrating the idea of adding a number of weeks:

/**
 * Returns a date instance with added `weeks` of delay.
 *
 * @param {Number} weeks - the number of weeks to add
 *
 * @returns {Date}
 */
function addWeeks (weeks, date = new Date()) {  
  date.setDate(date.getDate() + weeks * 7)

  return date
}

Use date.getDate() to retrieve the defined days for the given date. Then add your desired weeks and adjust the date using the setDate(). For each week in the future you’re adding seven days to the given date instance.

The nice part of this function is the automatic handling of the month and year changes. For example, when adding a week to August 31st you’re receiving September 7th.

addWeeks(2)  
// 2021-09-16T07:19:56.627Z
// the optional second "date" instance parameter falls back to "now"
// at the time of writing this tutorial "now" is "September 2nd 2021"

addWeeks(1, new Date('2021-08-31'))  
// 2021-09-07T00:00:00.000Z

Enjoy!

Explore the Library

Find interesting tutorials and solutions for your problems.