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?
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?
Share Improve this question edited Nov 21, 2012 at 12:51 user18577 asked Nov 21, 2012 at 12:44 user18577user18577 6433 gold badges10 silver badges21 bronze badges 3- Please define what "this doesn't work" means. – Lee Taylor Commented Nov 21, 2012 at 12:47
- Do you mean "the Monday before last"? So you're trying to get the Monday-> Sunday span preceding the current week? – jonvuri Commented Nov 21, 2012 at 12:49
- Kiyura - yes that's what I mean – user18577 Commented Nov 21, 2012 at 12:51
3 Answers
Reset to default 3The 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/DPQeB/2/ and its output
11/18/2012
11/24/2012
One library that allows you to format dates is jQuery UI.
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.
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 );