我想根据今天的日期获取前一个星期六的日期,所以如果我们在星期二,则想要的日期应该是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
答案 0 :(得分:3)
当在日期对象上调用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()]);