我想根据今天的日期获取前一个星期六的日期,所以如果我们在星期二,所需的日期应该是3天前。
另外,如果今天是星期六,则将其计为上一个星期六。

例如:

today = Tuesday 09, July 2019
previous saturday => Saturday, 06 July 2019
next friday => Friday, 12 July


如果今天是星期六,则:

today = Saturday, 13 July 2019
previous saturday = Saturday, 13 July 2019
next friday = Friday, 20 July 2019


在Niet的回答之后,这是我的代码,但是我仍然得到错误的日期:

var dateObj = new Date() // friday July 19
dateObj.setDate(dateObj.getDate() - (6-dateObj.getDay())) // gives me thursday, 18 July
dateObj.setDate(dateObj.getDate() + 6) // gives me wednesday, 24 July

最佳答案

您可以方便地在日期对象上调用getDay()时,星期六是列表中6的最后一个条目(星期日为0)。这意味着您需要倒数才能获得“最近”星期六的天数仅为6-dateObj.getDay()

将其与JS将“自动更正”日期这样的事实结合起来,使得“ 7月1日为负”是6月29日,您可以调用

dateObj.setDate(dateObj.getDate() - (6-dateObj.getDay()))


现在,根据需要,dateObj是最近的星期六。

然后可以类似地获得下一个星期五:

dateObj.setDate(dateObj.getDate() + 6)


dateObj现在是最近的星期六之后的星期五。



我弄错了号码。它的:

dateObj.setDate(dateObj.getDate() - (dateObj.getDay()+1)%7);


作为更一般的情况,实际上您可以将dateObj.getDay()映射到许多天后退。上一个代码块中的数学等效于:

const map = [1, 2, 3, 4, 5, 6, 0];
dateObj.setDate(dateObj.getDate() - map[dateObj.getDay()]);

07-24 09:51
查看更多