@missbells

Как посчитать количество вторников в месяце на календаре?

Есть код календаря.
Как в этом календаре посчитать, сколько вторников в месяце?
Второй день ломаю голову, куча мыслей, но ничего не работает.
Буду очень благодарна за помощь

Собственно, код календаря:

<body>
	<div id="calendar"></div>
	<script>
	
	var now = new Date();   // Определяем текущую дату.

	now.setDate(1);   // Устанавливаем в переменной первое число текущего месяца. 
	var dayOfWeek = now.getDay();   //Определяем день недели. 
	if (dayOfWeek == 0)   
		dayOfWeek = 7;
	var currentMonth = now.getMonth();   // Узнаём месяц. 
	var daysInMonth = 28;   // Устанавливаем минимально возможное число дней в месяце (меньше не бывает). 
	while (currentMonth == now.getMonth())   // Проверяем в цикле, не изменился ли месяц при попытке установить невозможное число. 
    now.setDate(++daysInMonth);   // Увеличиваем число. 
	--daysInMonth;//Получаем корректное число дней в месяце. 
	
	var d = new Date();
	d.setDate(0);
	var prev = d.getDate() - dayOfWeek + 2;	
	
	var table = '<table>';
	table += '<tr id="head"><th>пн</th><th>вт</th><th>ср</th><th>чт</th><th>пт</th><th>сб</th><th>вс</th></tr>'
	
	var days = 0;
	var td = document.getElementsByTagName('td');	
	
	for (var i = 2 - dayOfWeek; i <= 43 - dayOfWeek; i++) {//Цикл, который будет заполнять таблицу. 
	
	if ((i - 1 + dayOfWeek) % 7 == 1)
		table += '<tr>';//Открываем тег элемента ‹tr›. 
		
	if (i < 1)
		table += '<td>' + prev++ + '</td>'
	
	if (i > 0 && i <= daysInMonth) {
		table += '<td class="thismonth">' + i + '</td>';   // Выводим ячейку календаря на текущий месяц. 
		}
	
	if (i > daysInMonth)
		table += '<td>' + (i - daysInMonth) + '</td>';   // Выводим ячейку календаря на будущий месяц. 
			
	if ((i - 1 + dayOfWeek) % 7 == 0) 
		table += '</tr>';//Закрываем тег элемента ‹tr›.
		
}
 
table += '</table>';//Закрываем тег элемента ‹table›

document.getElementById('calendar').innerHTML = table;		
	</script>
</body>
  • Вопрос задан
  • 743 просмотра
Пригласить эксперта
Ответы на вопрос 2
zo0m
@zo0m
full stack developer
я бы рекомендовал вам поглядеть на momentjs.com

набросал:

var currentTuesday = moment().startOf('month').weekday(2);
var lastDayOfMonth= moment().endOf('month');

while (currentTuesday.isBefore(lastDayOfMonth)) {
  console.log(currentTuesday.format('DD-MM ddd'));
  currentTuesday = currentTuesday.add(7, 'days')
}
Ответ написан
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
Тоже набросал:

function getCDays(target, startDay, count){
    var whole = Math.floor(count / 7), risid = count % 7;
    var coef = risid > (target >= startDay 
         ? (target - startDay) 
         : (7 - startDay + target) 
     );

    return whole + coef; 
}

getCDays(
  2,   // Дни, которые надо подсчитать (ВТ)
  3,  // Первый день недели в месяце (СР)
  31 // Дней в месяце
);


#Потестим
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы