2

I am using the following in a script:

var startDate = new Date("10/12/2012");
var endDate = new Date("10/18/2012");

I would like those dates to be dynamically created with startDate as last Monday and endDate as last Sunday. I have tried the following:

var curr = new Date; // get current date
var first = curr.getDate() - curr.getDay(); // First day is the day of the month - the day of the week
var last = first + 6; // last day is the first day + 6
var startDate = new Date(curr.setDate(first)).format("m/dd/yyyy");
var endDate = new Date(curr.setDate(last)).format("m/dd/yyyy");

But for some reason this doesn't work - nothing is outputted for the startDate or endDate variables.

Any ideas what I am doing wrong?

user18577
  • 643
  • 3
  • 9
  • 21

3 Answers3

3

The Javascript datetime object does not have a format method. You'll need to use a library or generate the string yourself:

var curr = new Date; // get current date
var first = curr.getDate() - curr.getDay(); // First day is the day of the month - the day of the week
var last = first + 6; // last day is the first day + 6
var startDate = new Date(curr.setDate(first));
startDate = "" + (startDate.getMonth() + 1) + "/" + startDate.getDate() + "/" + startDate.getFullYear();
var endDate = new Date(curr.setDate(last));
endDate = "" + (endDate.getMonth() + 1) + "/" + endDate.getDate() + "/" + endDate.getFullYear();

Here's a fiddle http://jsfiddle.net/DPQeB/2/ and its output

11/18/2012
11/24/2012

One library that allows you to format dates is jQuery UI.

Matt Zeunert
  • 16,075
  • 6
  • 52
  • 78
2

Using date.js to get last Sunday

Date.today().moveToDayOfWeek(0, -1); // -1 indicates to go back

Best to use a library to manipulate dates. It will make your life a lot easier.

Having said that have a long-term aim to understand dates in JavaScript. It will help you with things like debugging.

Bruno
  • 5,772
  • 1
  • 26
  • 43
0

If starting from sunday:

var today = new Date();
var sundayOfWeek = new Date(today.getFullYear(), today.getMonth(), today.getDate() - today.getDay()-8);
var mondayOfWeek = new Date(today.getFullYear(), today.getMonth(), today.getDate() - today.getDay()+1);

console.log( mondayOfWeek );
console.log( sundayOfWeek );
shzyincu
  • 409
  • 4
  • 21