SharePoint Online REST API 事件列表未来及进行中事件查询需求
补全OData筛选条件,获取未来&进行中事件
我来帮你补全这个SharePoint REST API的筛选逻辑,刚好能精准拿到你需要的两类事件~
首先明确你的需求对应的筛选规则:
- 未来事件:开始日期(EventDate)≥ 当前日期
- 进行中事件:开始日期 < 当前日期,但结束日期(EndDate)≥ 当前日期
把这两个规则用OData的语法组合起来,就能得到完整的请求URL了。下面是补全后的代码:
function ReFormatTime() { return moment().format("YYYY-MM-DDT00:00:00"); } var now = ReFormatTime(); // 补全$filter部分,组合两个筛选条件 var _url = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('Bokningar')/items?$select=EndDate,ID,EventDate,LinkTitle,IsBlock,Program_x0020_Id&$filter=(EventDate ge datetime'" + now + "') or (EventDate lt datetime'" + now + "' and EndDate ge datetime'" + now + "')";
代码说明:
- 日期格式化:你的
ReFormatTime函数把当前时间转成当天0点的格式,这样比较的是日期维度,而不是精确到时分秒,适合按天筛选的场景。如果需要精确到时分秒,把格式改成"YYYY-MM-DDTHH:mm:ss"即可。 - OData筛选逻辑:
(EventDate ge datetime'" + now + "'):匹配所有还未开始的未来事件(EventDate lt datetime'" + now + "' and EndDate ge datetime'" + now + "'):匹配已经开始但还没结束的进行中事件- 用
or连接两个条件,确保两类事件都会被返回
- 字段注意:要确认你的列表里的开始/结束日期字段确实是
EventDate和EndDate,如果字段名不一样,记得对应修改。
内容的提问来源于stack exchange,提问作者AllramEst
相关产品推荐
相关产品推荐

