SharePoint REST Api过滤器的日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SharePoint REST Api过滤器的日期相关的知识,希望对你有一定的参考价值。

我想按日期过滤掉项目。我想得到一个项目,其dateFrom等于或大于今天和dateTo等于或小于今天。这是我的查询和重新格式化日期功能。在SharePoint Online中,我将日期设置为only date。默认情况下,sharePoint将时间部分设置为23:00:00。这就是为什么静态使用它。查询的´ge dateFrom´部分工作正常,但le dateTo忽略了equel部分。所以如果dateTo设置为2018-03-19。我没有得到任何返回的项目,dateTo设置为该日期2018-03-19。我的查询错了吗?

     var requestUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('" + _weaklyQuestion + "')/items?$select=Id,Title,answersOptions,dateFrom,dateTo&$filter=('" + ReFormatTime() + "' ge dateFrom) and ('" + ReFormatTime() + "' le dateTo)&$top=1";

        function ReFormatTime() {
        var date = new Date(),
            year = date.getFullYear(),
            month = date.getMonth() + 1,
            dt = date.getDate();

        if (dt < 10) {
            dt = '0' + dt;
        }
        if (month < 10) {
            month = '0' + month;
        }
        return year + '-' + month + '-' + dt + 'T23:00:00Z';
    }
答案

你必须将格式化的时间字符串包装在datetime()

var requestUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('" + _weaklyQuestion + "')/items?$select=Id,Title,answersOptions,dateFrom,dateTo&$filter=(datetime('" + ReFormatTime() + "') ge dateFrom) and (datetime('" + ReFormatTime() + "') le dateTo)&$top=1";
另一答案

对于SharePoint Online版本 - 日期范围比较:

1)转换日期用于2019-04-18T23:59:00.000Z格式的比较。

2)在日期结束时添加000Z并形成如下所示的休息查询。

/_api/web/lists/getByTitle('ListName')/items?$orderby=Created desC&$filter=(Created ge datetime'2019-04-17T00:00:00.000Z') and (Created le datetime'2019-04-18T23:59:00.000Z')

以上是关于SharePoint REST Api过滤器的日期的主要内容,如果未能解决你的问题,请参考以下文章

SharePoint 2013 - REST API about Content

Sharepoint 2013:通过 REST API 确保用户

从sharepoint rest api下载文件时出现400错误

SharePoint REST API 的 Expand 方法

Sharepoint 2013 通过 REST API:尝试创建项目时禁止出现错误 403

sharepoint rest api Add ListItem 报错