因此,我有一个函数,它接收日期并返回该日期从周一到周日的那一周的每一天。获取基于给定日期的星期一至星期日
因此,例如:
input into function: 2017-08-24T19:37:09-04:00
将返回数组:
[
"2017-08-21T19:37:09-04:00",
"2017-08-22T19:37:09-04:00",
"2017-08-23T19:37:09-04:00",
"2017-08-24T19:37:09-04:00",
"2017-08-25T19:37:09-04:00",
"2017-08-26T19:37:09-04:00",
"2017-08-27T19:37:09-04:00"
]
这是我迄今(我使用momentjs
)代码:
function getMonday(d) {
d = new Date(d);
var day = d.getDay() || 7;
var diff = d.getDate() - day + (day == 0 ? -6:1);
for (var i = 0; i <= 6; i++) {
var date = new Date(d.setDate(diff+i));
dateRange.push(moment(date).format());
console.log(dateRange);
}
}
所以这工作正常,但它失败时输入是:getMonday(new Date('2017-07-31T19:44:06-04:00'))
...
在这种情况下,它返回:
2017-07-31T19:44:06-04:00 2017-08-01T19:44:06-04:00 2017-09-02T19:44:06-04:00 2017-10-04T19:44:06-04:00 2017-11-04T19:44:06-04:00 2017-12-06T19:44:06-04:00 2018-01-06T19:44:06-04:00
,因为它是递增月这显然是错误的...
这是怎么回事?有没有一种方法可以轻松解决我缺少的问题?
谢谢!
非常漂亮和干净的代码..我只是有一个问题,当'输入=“2017-08-27T19:44:06 -04:00'',因为它不会在特定周内返回“星期一至星期日”,它会在下周显示它...有什么想法? –
@JaneDoe啊,问题是我的代码假设星期天为一周的第一天,而不是最后一天。我会看看我能做什么 – Phil
@JaneDoe现在应该都很好 – Phil