Получить на прошлой неделе в JavaScript

Я использую следующее в сценарии:

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

Я хотел бы, чтобы эти даты создавались динамически с startDate, как в прошлый понедельник, и с endDate, как в прошлое воскресенье. Я пробовал следующее:

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");

Но по какой-то причине это не работает - ничего не выводится для переменных startDate или endDate.

Есть идеи, что я делаю не так?

3 ответа

Решение

У объекта datetime Javascript нет метода форматирования. Вам нужно будет использовать библиотеку или сгенерировать строку самостоятельно:

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();

Вот скрипка http://jsfiddle.net/DPQeB/2/ и ее вывод

11/18/2012
11/24/2012

Одна библиотека, которая позволяет форматировать даты, - это jQuery UI.

Использование date.js, чтобы получить в прошлое воскресенье

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

Лучше всего использовать библиотеку для манипулирования датами. Это сделает вашу жизнь намного проще.

Сказав, что имеют долгосрочную цель, чтобы понять даты в JavaScript. Это поможет вам с такими вещами, как отладка.

Если начинать с воскресенья:

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 );
Другие вопросы по тегам