我正在尝试找到使用Javascript比较日期/时间的最佳方法,以防止在SharePoint日历上进行双重预订。所以我加载一个包含每个事件的项目的数组,包括它们的开始日期/时间和结束日期/时间。我想将开始日期/时间和结束日期/时间与对象中的开始/结束日期/时间进行比较,但我不确定如何确保日期不会失效。
像:
//date that is created from user controls
var startDate = new Date(startDat + 'T' + startHour + ':' + startMin + ':00');
var endDate = new Date(endDat+ 'T' + endHour+ ':' + endMin+ ':00');
for ( var i = 0; i < allEvents.length; i++ ) {
var thisEvent = allevents[i];
//having trouble with the compare
//i have tried silly ifs like
if (thisEvent.startDate >= startDate && thisEvent.endDate <= endDate) {
// this seems like I am going down the wrong path for sure
}
}
然后我尝试将加载的对象拆分为日期的每个组件的单独值(int)
var thisObj = { startMonth: returnMonth(startDate), startDay: returnDay(startDate), etc
但我不确定这不仅仅是另一种愚蠢的做法,而且还有另一种更有意义,因为我只是在学习它。
答案 0 :(得分:1)
我有类似的要求,但选择在预订阶段使用jQuery / SPServices解决。
代码仍处于构建状态(即未完成),但该方法可能有所帮助。
我将一个事件处理程序附加到一个列,然后选择,将同一列表中预订的所有日期提取到一个数组,然后在滚动的12个月cal上显示该数组,如下所示。
我没有检查以确保新的预订不会重叠,但在Pre-Save上快速浏览阵列会为我提供严格的Go / No Go选项。虽然依赖于客户端JS,因此无法在数据表或Web服务上下文中工作。