所以我有一个函数,它接收一个日期,并从该日期的星期一到星期日每天返回。
例如:
const auto&
会返回一个数组:
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'))
这显然是错误的,因为它增加了几个月......
发生了什么?有没有办法轻松解决这个我错过的问题?
谢谢!
答案 0 :(得分:2)
问题似乎是你在每个循环中通过d
变异diff + i
,假设原始日期为31
,最终导致{{1}每次大约一个月。
这样的事情应该更简单
d