Глядя на код, который я предоставил ниже, кто-нибудь знает, почему повторение не является последовательным в течение каждого месяца? Под этим я подразумеваю первый месяц, который отображается до конца, повтор работает нормально, а затем к концу месяца повтор не отображается правильно. Вывод приведенного ниже кода можно увидеть здесь, на jsbin , просто нажмите кнопку предварительного просмотра.
(function() {
function MyEvents(start,end, callback) {
var events = [];
// Setup the meeting on the this weeks "monday"
var meeting = new Date(start.getFullYear(),
start.getMonth(),
start.getDate(),
4, 30, 00);
var endmeeting = new Date(2010, 07, 06, 8, 00, 00);
meeting.setDate((meeting.getDate() - meeting.getDay()) + 1);
var newEnd = new Date(end);
var maxEnd = new Date((newEnd.getFullYear() + 1), newEnd.getMonth(), newEnd.getDate());
//==========Calculate Repeat===========//
var oneDay = 1000 * 60 * 60 * 24;
var date1 = meeting.getTime();
var date2 = endmeeting.getTime();
var difference = Math.abs(date1 - date2);
var days = Math.abs(difference / oneDay);
while (meeting <= maxEnd) {
var endDate = new Date();
endDate.setDate(meeting.getDate() + days);
events.push({
id: 2,
title: "Monday Meeting",
start: new Date(meeting.valueOf()),
end: endDate,
allDay: false
});
// increase by one week
meeting.setDate(meeting.getDate() + 7);
}
callback(events);
}
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,basicWeek,basicDay'
},
events: MyEvents
});
});
Редактировать - Я вижу, что не так, почему это. Если я поставлю «alert (endDate);» перед "meeting.setDate (meeting.getDate () + 7);" я вижу, что он дает мне правильную "конечную" дату. Проблема здесь в том, что как только он дойдет до сентября и последующих месяцев, месяц всегда останется «августом», но даты являются правильными датами. Так, например, когда он достигнет «10 сентября», это снова будет «10 августа», «17 сентября» будет «17 августа». Даты меняются но не месяц. Есть идеи, люди?