2014-03-05 41 views
0

我正试图找到使用Javascript比较日期/时间的最佳方法,以防止在SharePoint日历上进行重复预订。所以我加载一个包含每个事件的项目的数组,包括他们的开始日期/时间和结束日期/时间。我想比较开始日期/时间和结束日期/时间与对象中的开始/结束日期/时间,但我不确定如何确保日期不会失效。SharePoint/Javascript:在javascript中比较日历日期时间

,如:

//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 

的每个组成部分,但我不知道这是不是只是另一个愚蠢的做法,还有另一个只是更有意义,因为我只是在学习这一点。

+1

所以你的问题基本上是关于如何比较两个日期?你可能想看看这个答案:http://stackoverflow.com/a/497790/1134119 – AymKdn

+0

谢谢,这是我一直在寻找。 – Justin

回答

1

我有类似的需求正在进行中,但选择在预订阶段使用jQuery/SPServices来解决它。

该代码仍在构建(即未完成),但该方法可能有所帮助。

我将一个事件处理程序附加到列上,然后在选择时,将在同一个列表中预订的所有日期提取到一个数组,然后在滚动的12个月cal上显示该数组,如下所示。

enter image description here

我没有检查,以确保新的预订不重叠,而是通过对预存的阵列会为我提供了一个严格的继续/选项快速扫描。虽然依赖于客户端JS,所以不能在数据表或Web服务上下文中工作。