Есть ещё другая тема, и мне она кажется более правильной, ну каждому своё.
Универсальный метод для уменьшения-увеличения дат:
1) нужную дату получить в формате миллисекунд (с 1 января 1970 года или как там, эпоха Юникс, ё-маё))
2) изменить её на нужное количество секунд. Например, на сутки назад: -3600*24*1000
3) получить новый объект даты по результирующему количеству миллисекунд
4) опа, теперь можно от него брать день, месяц, час - всё будет автоматом корректно

Код:
var currDate = new Date();
var msecs = currDate.getTime();
msecs-=1000*3600*24;
var newDate = new Date(msecs);