当前位置: 首页>>技术教程>>正文


REST API使用’today’按开始和结束日期过滤

webfans 技术教程 , , , , , 去评论

问题描述

我刚接触在SP中使用REST过滤日期,但我正在尝试执行类似下面的操作,但我不确定如何将今天的日期作为变量添加到请求中。我不认为我太远了所以非常感谢任何帮助。

    var today = new Date();
    $.ajax({
        url: "/_api/web/lists/GetByTitle('DateItems')/items?$orderby=SortOrder asc&$filter=StartDate le datetime'" + today + "' and EndDate ge datetime'" + today + "'",
        ...
    });

最佳解决思路

由于您的”today”变量是JavaScript日期对象,因此您可以通过调用 toISOString()方法来获取字符串表示。

...$filter=StartDate ge datetime'" + today.toISOString() + "' and ...

次佳解决思路

我回答了问题here(不完全是重复的,因为那是关于Search REST API的,我碰巧给出了基本REST的答案)。

以下是在REST中过滤日期的方法:

$filter=StartDate ge datetime'2014-01-01T00%3a00%3a00'

此过滤器用于在2014年1月1日00:00:00之后创建的项目。

因此,要在两个日期范围之间进行过滤,只需向过滤器添加另一个条件:

$filter=(StartDate ge datetime'2014-01-01T00%3a00%3a00') and (EndDate le datetime'2014-04-30T00%3a00%3a00')

此过滤器用于2014年1月1日至2014年5月1日期间创建的项目。

只需以下列格式创建日期:YYYY-MM-DDTHH:MM:SS,然后对其进行编码(或者只使用%3a而不是冒号)。

第三种解决思路

本文介绍基于日期的REST过滤,http://itblog.wolthaus.net/2011/12/rest-filter-datetime/

您想要以YYYY-MM-DD格式传递日期。

第四种思路

我正在为在线Share-point 2013 /office 365提取数据。我使用了上述方法。但它没有返回预期的结果。我创建了两个样本记录,日期为“2016年4月2日”。当我使用上面的语法时,它总是只返回一条记录。我花了两天时间来完成这项工作。我在上面的过滤器中添加了以下内容。

$filter= (Start_Date ge datetime'2016-04-02T07:00:00.000Z') and (End__Date le datetime'2016-04-03T03:30:00.000Z')

您必须在data-time字符串的末尾添加.000Z才能转换时区。在该模式中,包含’z’ date-time组件表示时区格式需要符合通用时区”standard”,其示例是太平洋标准时间;太平洋标准时间; GMT-08:00.A ‘Z’表示时区符合RFC 822时区标准,例如

第五种思路

如果您的情况与我的情况类似,并且您正在托管匿名启用的网站收集,那么listdata.svc是不可能的,因为它需要身份验证;是的,您可以查询REST端点,尽管您需要执行POST请求并使用CAML。

下载U2U CAML Builder以构建您的查询并生成CAML。从那里做一个发布请求到/GetItems(注意’get’部分,而不仅仅是/items)。

$.ajax({
    url: "/_api/lists/getbytitle('School-Calendar')/GETitems",
    method: "POST",
    data: "{ \"query\" : { \"__metadata\": { \"type\": \"SP.CamlQuery\" }, \"ViewXml\": \"<View><Query><Where><And><Geq><FieldRef Name='EventDate' /><Value IncludeTimeValue='TRUE' Type='DateTime'>2016-12-01T16:15:35Z</Value></Geq><Leq><FieldRef Name='EventDate' /><Value IncludeTimeValue='TRUE' Type='DateTime'>2016-12-31T16:16:31Z</Value></Leq></And></Where></Query><ViewFields><FieldRef Name='Title' /><FieldRef Name='Location' /><FieldRef Name='EventDate' /><FieldRef Name='EndDate' /><FieldRef Name='Description' /></ViewFields><QueryOptions /></View>\" } }",
    headers: {
        "X-RequestDigest": $("#__REQUESTDIGEST").val(),
        "Accept": "application/json; odata=verbose",
        "Content-Type": "application/json; odata=verbose"
    },
    success: function(data)
    {
        console.log("SUCCESS QUERY", data);
    },
    error:function()
    {
        console.error("ERROR DURING QUERY");
    }
 });

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2480.html,转载请务必附带本地址声明。