Если я верно понял вопрос, то примерно так.
Предположим, год, месяц и дата известны (если текущая дата, то значения этих переменных можно получить из
new Date() с помощью соответствующих методов).
В переменной
start записаны месяц и дата начала учебного года.
Тогда:
/*Задаём начало учебного года, месяц задан в человеческом восприятии*/
var start = [9, 1];
function getIndex (date, month, year) {
/*Исправляем возможную неточность в месяце*/
month = month % 12;
/*Если год не получен, берём из текущей даты*/
year = year || new Date().getFullYear();
var currentDay = new Date(year, month - 1, date),
/*Узнаём начало текущей недели*/
startWeekDay = date - (currentDay.getDay() + 6) % 7,
/*Определяем год начала учебного года*/
startYear = month < start[0] ? year - 1 : year,
/*Получаем разницу между началом текущей недели и началом учебного года*/
delta = new Date(year, month - 1, startWeekDay) - new Date(startYear, start[0] - 1, start[1]);
return Math.ceil(delta / (7 * 1000 * 3600 * 24)) % 2 + 1;
}
console.log(getIndex(30, 4, 2015)); //30 апреля 2015 года
console.log(getIndex(1, 5, 2015)); //1 мая 2015 года
console.log(getIndex(4, 5, 2015)); //4 мая 2015 года — начало новой недели
console.log(getIndex(4, 5)); //4 мая текущего года