Если вы посмотрите на currentTime
, он ссылается на объект Дата . Итак, при выполнении следующего кода:
var previouslySelectedTime = currentTime;
переменная previouslySelectedTime
будет ссылаться на тот же объект, на который ссылается currentTime
. Затем вы выполните:
currentTime.setMinutes(currentTime.getMinutes() + interval);
, который изменит объект, на который ссылаются оба, currentTime
и previouslySelectedTime
. Простым решением этой проблемы будет создание нового Date
из currentTime
перед присвоением его указанной переменной:
var previouslySelectedTime = new Date(currentTime);
Кроме того, после исправления, нет необходимости в следующей строке:
currentTime = new Date(currentTime);
* ** 1 022 тысяча двадцать-один * Пример
var time = [14, 35];
var interval = 40; // in minutes
var startTime = [10, 40];
var timeFormatted = '2019-02-04 ' + time[0] + ':' + time[1];
var startTimeFormatted = '2019-02-04 ' + startTime[0] + ':' + startTime[1];
var dtTime = new Date(timeFormatted);
var currentTime = new Date(startTimeFormatted);
var previouslySelectedTime;
for (let i = 0; i < 20; i++)
{
previouslySelectedTime = new Date(currentTime);
currentTime.setMinutes(currentTime.getMinutes() + interval);
if (currentTime >= dtTime)
break;
}
alert(previouslySelectedTime);
Упрощенная версия:
Более того, вы могли бы сделать некоторые упрощения в своем коде, если бы использовали методы, которые предоставляет объект Date()
и цикл while
.
var time = [14, 35];
var interval = 40; // in minutes
var startTime = [10, 40];
var dtTime = new Date();
dtTime.setHours(time[0], time[1], 0);
var currentTime = new Date();
currentTime.setHours(startTime[0], startTime[1], 0);
var previouslySelectedTime;
while (currentTime < dtTime)
{
previouslySelectedTime = new Date(currentTime);
currentTime.setMinutes(currentTime.getMinutes() + interval);
}
alert(previouslySelectedTime);