我想根据今天的日期获取前一个星期六的日期,所以如果我们在星期二,所需的日期应该是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()]);