【发布时间】:2019-09-12 15:51:16
【问题描述】:
我正在尝试获取给定日期的最后一个星期六。如果函数参数是9/12/2019,它应该返回9/7/2019。
我尝试了以下两种方法都没有成功:
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'));
更新
修改后的 getLastSaturday(theDate) 有效
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;
}
【问题讨论】:
-
您的第一个示例运行良好。
-
当我测试它时,我选择 8/5/2019 并返回 9/3/2019。我从 Ajax 调用中获得并传递给此函数的日期是
Mon Aug 05 2019 00:00:00 GMT-0400 (Eastern Daylight Time)的形式,即参数theDate -
你看过这篇文章吗? stackoverflow.com/questions/3638906/… 修改其中一个答案以满足您的需求并不难。
-
感谢@user7290573,我能够使用 DateJS 库来解决这个问题。让它变得非常简单,我所要做的就是获取从 Ajax 调用 (
dtWeekStart) 返回的日期并使用dtStart = dtWeekStart.last().saturday();。如果您在回复中发表评论,我会将其标记为答案。 -
我还更新了我的第一个 JS 函数以返回相同的结果,尽管 DateJS 更容易。
标签: javascript jquery date