dalv_happy
@dalv_happy

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

Добрый вечер. Нужно своё двухнедельное расписание адаптировать под календарь на сайте, т.е. пользователь может кликнуть по-любому дню недели и в ajax окне ему высветиться расписание на этот день.
И вопрос состоит в том как сделать чередование недель с 1-ой на вторую, где будет храниться информация, понятно что само расписание в базе данных, но какой параметр отвечает за определение какая сейчас неделя при изменении месяца, года?
  • Вопрос задан
  • 382 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Так если данные будете в базе хранить, так и пользуйтесь функциями базы. Номер недели в году - стандартная функция того же MySQL. Привяжитесь к чётности недели, вот и будет первая-вторая.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
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 мая текущего года
Ответ написан
Ваш ответ на вопрос

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

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