Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите разобраться с объектом Date() (https://javascript.ru/forum/misc/54667-pomogite-razobratsya-s-obektom-date.html)

tur10 27.03.2015 00:01

Помогите разобраться с объектом Date()
 
Есть очень простая учебная задача, вывести все пятницы до конца текущего года. Казалось бы, что может быть проще?

var curDate = new Date ();
var varDate = new Date ();
var iday = 0;

while (varDate.getFullYear() < 2016) {						// цикл выполняется пока дата не превышает 2015 года
	if (varDate.getDay() == 5) {console.log("Дата: " + varDate)}		// если день неделя - пятница, то печатаем дату
	var varDate = new Date ();						// без этой строчки код работает неверно... почему???
	varDate.setDate(curDate.getDate()+iday);				// доходит до конца года перебирая день за днем
	iday++;
}


Этот код отрабатывает как надо. Но если закоментировать строку 7, то код перестает работать как надо. Не понимаю, зачем на каждой итерации нужно создавать новый экземпляр этого объекта?

Decode 27.03.2015 01:20

tur10,

var currentDate = new Date();

while(currentDate.getFullYear() < 2016) {
    if(currentDate.getDay() == 5) console.log( currentDate );
    currentDate.setDate(currentDate.getDate() + 1);
}

Pavel M. 27.03.2015 16:45

зачем по одному дню прибавлять?

как нашел первую пятницу, можно смело прибавлять по 7 дней без проверки - будет следующая пятница, потом следующая ...


Часовой пояс GMT +3, время: 00:16.