获取上一个星期六的日期和下一个星期五的日期

时间:2019-07-13 12:09:46

标签: javascript

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

1 个答案:

答案 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()]);