在 javascript 中添加日期出现意外结果
Adding dates in javascript with unexpected results
我正在尝试循环并将日期添加 7 天,但我不确定哪里出错了。循环的第一次迭代后日期变得疯狂。
我想要实现的是 1 月 1 日,第二天是 1 月 8 日,然后是 1 月 8 日和 1 月 15 日等。它增加了一个月而不是 8 天。
打印
start day Mon, 01 Jan 2018 00:00:00 GMT
The next day is: Mon, 08 Jan 2018 00:00:00 GMT
start day Mon, 08 Jan 2018 00:00:00 GMT
The next day is:Thu, 08 Feb 2018 00:00:00 GMT
var start = new Date('2018-01-01');
var nextDay = new Date(start);
for (day = 1; day <= 5; day++)
{
console.log("start day "+nextDay.toUTCString());
nextDay.setDate(start.getDate()+7);
console.log("The next day is:"+nextDay.toUTCString());
}
您目前总是将开始日期增加 7 天,为了产生想要的结果您应该做的是:
var start = new Date('2018-01-01');
var nextDay = new Date(start);
for (day = 1; day <= 5; day++)
{
console.log("start day "+nextDay.toUTCString());
nextDay.setDate(start.getDate()+7);
start.setDate(nextDay.getDate());
console.log("The next day is:"+nextDay.toUTCString());
}
同时每次都增加开始时间,否则您将始终在开始时间后增加 7 天,这始终是相同的日期。
我意识到这不是最好的编码方式,您不需要 nextDay
变量:
var start = new Date('2018-01-01');
for (day = 1; day <= 5; day++)
{
console.log("Start day "+start.toUTCString());
start.setDate(start.getDate()+7);
console.log("The next day is:"+start.toUTCString());
}
我正在尝试循环并将日期添加 7 天,但我不确定哪里出错了。循环的第一次迭代后日期变得疯狂。
我想要实现的是 1 月 1 日,第二天是 1 月 8 日,然后是 1 月 8 日和 1 月 15 日等。它增加了一个月而不是 8 天。
打印
start day Mon, 01 Jan 2018 00:00:00 GMT
The next day is: Mon, 08 Jan 2018 00:00:00 GMT
start day Mon, 08 Jan 2018 00:00:00 GMT
The next day is:Thu, 08 Feb 2018 00:00:00 GMT
var start = new Date('2018-01-01');
var nextDay = new Date(start);
for (day = 1; day <= 5; day++)
{
console.log("start day "+nextDay.toUTCString());
nextDay.setDate(start.getDate()+7);
console.log("The next day is:"+nextDay.toUTCString());
}
您目前总是将开始日期增加 7 天,为了产生想要的结果您应该做的是:
var start = new Date('2018-01-01');
var nextDay = new Date(start);
for (day = 1; day <= 5; day++)
{
console.log("start day "+nextDay.toUTCString());
nextDay.setDate(start.getDate()+7);
start.setDate(nextDay.getDate());
console.log("The next day is:"+nextDay.toUTCString());
}
同时每次都增加开始时间,否则您将始终在开始时间后增加 7 天,这始终是相同的日期。
我意识到这不是最好的编码方式,您不需要 nextDay
变量:
var start = new Date('2018-01-01');
for (day = 1; day <= 5; day++)
{
console.log("Start day "+start.toUTCString());
start.setDate(start.getDate()+7);
console.log("The next day is:"+start.toUTCString());
}