javascript - 在循环中将日期添加到日期,javascript

标签 javascript

我觉得我在这方面遗漏了一些东西,我想在当前日期上加上 7 天,然后是 14 天,然后是 21 天。我最终得到的是间隔的复合而不是当前的日期 + 7,然后是当前日期 + 14 等等。

var date = new Date();

for(var i = 0; i < 4; i++){
                var tempDate = date;
                var repeatson = tempDate.setDate(date.getDate() + (i*7));
                var repeats = new Date(repeatson);
                console.log(repeats);
                }

结果:

"2015-03-17T21:03:13.326Z"
"2015-03-24T21:03:13.326Z"
"2015-04-07T20:03:13.326Z"
"2015-04-28T20:03:13.326Z"

而不是期望的第 24、31 和 8

最佳答案

var tempDate = date; 只是将 reference 分配给 date。您不是在创建副本。同样,setDate 不会返回新日期,它会改变日期本身。

一个解决方案是创建一个副本:

var tempDate = new Date(date);

你的循环可以简化为

var repeats = (new Date(date)).setDate(date.getDate() + (i*7))

关于javascript - 在循环中将日期添加到日期,javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29109876/

相关文章:

javascript - 对象存在,但在 YouTube 响应中仍未定义?

javascript - 是否可以获取组件中指定的引用名称? Vue.js

javascript - 在动态生成的 HTML 中使用 CSS 布局标签/输入/选择元素的问题

javascript - 隐藏 dom 上的所有内容,直到所有内容都加载完毕

javascript - 子路由在 Angular 4 中不起作用

javascript - 如何从 Javascript 中的对象属性连接多个数组?

javascript - 具有默认值的 JS 子类

javascript - ui-grid 突出显示某些特定行

javascript - 显示/隐藏功能 - 额外的空白

javascript - 使用 jQuery SlideDown 函数时是否需要始终隐藏元素?