0

Using the current date new Date(), I would like to calculate the date for the following Wednesday using Javascript.

For example, the current date is today:

"Sun Apr 18 2022 15:00:00 GMT"

What I would like to do is get the date for the following Wednesday, which would be:

"Wed Apr 20 2022 15:00:00 GMT"

If the current day is a Wednesday, I would like to calculate the date for the following Wednesday.

How could I achieve this?

2 Answers 2

4

Use the getDay method which will give day of the week (0 - 6, from sunday to saturday). (Wednesday is day 3)

function nextWednesday(date) {
  const day = date.getDay();
  // getDay returns between 0 - 6. Sunday - Saturday.
  // 3 is Wednesday
  let daysToAdd = 0;
  if (day < 3) {
    daysToAdd = 3 - day;
  } else {
    daysToAdd = 7 - day + 3;
  }
  return new Date(date.getTime() + daysToAdd * 24 * 60 * 60 * 1000);
}


const today = new Date();

console.log('today: ', today.toString());
console.log('following wednesday: ',  nextWednesday(today).toString())

Sign up to request clarification or add additional context in comments.

2 Comments

Thanks Siva, that's really helpful, much appreciated. Say I wanted to get the next 4 Wednesday's dates from the today constant, how could I achieve that?
@herbie, once you get the next wednesday, you can easily add + 7 days to next wed. (keep doing 4 times in loop)
1

Whenever I need to find something in JavaScript, I search the internet and prefix "mdn " to search the Mozilla development site. For example, searching Google for "mdn weekday" will give a result pointing to documentation for Date.prototype.getDay().

I would likely end up with something like this:

function daysToWednesday(dt) {
  const day = Date(dt).getDay();
  if (day < 3) {
    return 3 - day;
  } else {
    return 10 - day;
  }
}

function nextWednesday(dt) {
  const ret = Date(dt);
  ret.setDate(ret.getDate() + daysToWednesday(ret));
  return ret;
}

1 Comment

Thanks @JSmart523, I appreciate the advice and the solution.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.