我使用msgraph-sdk-javascript
版本0.1.2
作为示例应用程序 - 我正在使用此URL通过修改日期排序的MS Graph API读取联系人列表:
https://graph.microsoft.com/v1.0/me/contacts?$orderby=lastModifiedDateTime asc&$top=10&$filter=lastModifiedDateTime gt 2016-10-24T14:21:03Z
效果很好,但有一个问题 - 输出中lastModifiedDateTime
属性的精度与查询时的精度不同。
为了在选择一长串联系人时实现正确的分页,我记得结果数组中最后一个元素的lastModifiedDateTime
,这样下次我将选择lastModifiedDateTime
的所有元素之后我已经看过的元素。但是,这不起作用。
例如,如果我有lastModifiedDateTime
值的元素返回为2016-10-24T14:21:03Z
但是如果我使用lastModifiedDateTime>2016-10-24T14:21:03Z
查询所有元素,我仍然会看到与之前相同的元素,我不知道#39;看看我是否选择lastModifiedDateTime>2016-10-24T14:21:03.999Z
。
您知道如何获得毫秒精度lastModifiedDateTime
作为输出吗?
答案 0 :(得分:0)
正如您所提到的,由于精度损失而发生此行为,过滤器表达式为:
lastModifiedDateTime gt 2016-10-24T14:21:03Z
对应于下一个(包括毫秒部分):
lastModifiedDateTime gt 2016-10-24T14:21:03.000Z
关于OData DateTime格式
Contact.LastModifiedDateTime
内部存储的精度高于一秒,有关详细信息,请参阅DateTimeOffset
structure,其中包含DateTimeOffset.Millisecond
Property
话虽如此,您可以考虑以下选项:
$filter
查询选项中的毫秒部分
$filter=lastModifiedDateTime ge 2016-10-24T14:21:04Z
这是一个类似的查询,用于在lastModifiedDateTime
2016-10-24T14:21:03Z
的所有联系人