Добавление дат в JavaScript с неожиданными результатами - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь повторить и добавить 7 дней к дате, и я не уверен, где я иду не так.Даты сходят с ума после первой итерации цикла.
То, что я пытаюсь достичь, - это 1 января, следующий день - 8 января, затем 8 января и 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());
}

1 Ответ

0 голосов
/ 15 мая 2018

Вы в настоящее время просто всегда добавляете 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());
}
...