I am trying to get the last Saturday from a given date. If function argument is 9/12/2019
it should return 9/7/2019
.
I have tried two methods below with no success:
function getLastSaturday(theDate) {
debugger
var dateToUse = new Date(theDate);
var lastSaturday = new Date(new Date().setDate(dateToUse.getDate() - (dateToUse.getDay() == 0 ? 7 : dateToUse.getDay() + 1)));
return lastSaturday;
}
function getLatestSaturday(theDate) {
var dateToUse = new Date(theDate);
var latestSaturday = new Date(new Date().setDate(dateToUse.getDate() - dateToUse.getDay() + 1));
return latestSaturday;
}
console.log(getLastSaturday('9/12/2019'));
console.log(getLatestSaturday('9/12/2019'));
console.log(getLastSaturday('8/5/2019'));
Update
Modified getLastSaturday(theDate) that works
function getLastSaturday(theDate) {
var dateToUse = new Date(theDate);
var start = dateToUse.getDay() == 0 ? 7 : dateToUse.getDay();
var target = 6; // Saturday
if (target >= start)
target -= 7;
var lastSaturday = dateToUse.addDays(target - start);
return lastSaturday;
}
Date.prototype.addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
}