• Как повесить двухнедельное расписание на календарь событий?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Так если данные будете в базе хранить, так и пользуйтесь функциями базы. Номер недели в году - стандартная функция того же MySQL. Привяжитесь к чётности недели, вот и будет первая-вторая.
    Ответ написан
    Комментировать
  • Как повесить двухнедельное расписание на календарь событий?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Если я верно понял вопрос, то примерно так.
    Предположим, год, месяц и дата известны (если текущая дата, то значения этих переменных можно получить из 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 мая текущего года
    Ответ написан
    3 комментария