这让我疯狂,我无法弄明白为什么。我正在制作一个预约系统,显示可用的时间段(在gCalendar中未预订的时间),将其划分,并根据指定的时间显示。
document.getElementById("availability").innerHTML = "";
var events = resp.items;
var time_sort = 30;
if (events.length > 0) {
document.getElementById("availability").innerHTML = "";
for (i = 0; i < events.length; i++) {
var event = events[i];
var event2 = events[i + 1];
var d1 = new Date(event.end.dateTime);
var d2 = new Date(event2.start.dateTime);
var diff = d2 - d1;
diff = Math.floor(diff / 60e3)
if (diff >= time_sort) {
var loop = Math.floor(diff / time_sort);
var whenStart = new Date(d2 - time_sort * 60000);
var whenEnd = new Date(d2);
document.getElementById("availability").innerHTML += ("Available" +
"\t" + loop + "\t" + whenStart + "\t\t" + whenEnd + "\t" + '<button>Reserve</button>' + "<br />");
} else {
whenStart = event.start.dateTime;
whenEnd = event.end.dateTime;
}
if (!whenStart) {
whenStart = event.start.date;
}
}
} else {
document.getElementById("availability").innerHTML += "No upcoming events found.";
}
});
});
运行上面的代码时,我得到了一个不错的结果。
可用时间8星期六2015年9月19日11:30:00 GMT + 0800(CST)星期六2015年9月19日12:00:00 GMT + 0800(CST)预约
可用2星期六2015年9月19日13:30:00 GMT + 0800(CST)星期六2015年9月19日14:00:00 GMT + 0800(CST)预约
可用2 Sun Sep 20 2015 09:30:00 GMT + 0800(CST)2015年9月20日10:00:00 GMT + 0800(CST)预约
可用2 Sun Sep 20 2015 11:30:00 GMT + 0800(CST)2015年9月20日星期日12:00:00 GMT + 0800(CST)储备
但是,我想扩展所有可用的时间块。例如,10:00-10:30,10:30-11:00,11:00-11:30,11:30-12:00等等。
可用的时间块数由变量循环表示(打印在8,2,2,2之上),然后向后移动(打印时间实际上是可用时间块的最后一个时间块)。
我以为我可以在var loop = Math.floor(diff / time_sort);
之后使用一个简单的for循环,但我只得到一个可扩展8次的可用时间块 - 一个以12:00结束。