即使在为 "LastModifiedTime" 指定过滤条件后也能获得一个额外的联系人

Getting one extra contact even after specifying filter condition for "LastModifiedTime"

假设 Office365 中有 40 个修改或新添加的联系人,当我的应用程序尝试使用 REST API 进行同步时,它正在获取 40 个联系人。如果我通过指定以下过滤器再次重新同步

Array (
[$top] => 7
[$orderby] => DateTimeLastModified
[$filter] => DateTimeLastModified gt 2015-01-06T07:23:59Z )

我正在获取在上一个请求中发送的最后一条记录,该记录不应该出现在这个请求中。

如果我指定的过滤器有任何错误,请指出。

我猜您在过滤器中传递的值是获得 returned 的联系人的 DateTimeLastModified 的实际值。这可能与 Exchange 存储 date/times 的方式有关。时间以毫秒为单位存储,但是从 REST API 公开它的方式可以看出,该值只有秒。

因此,虽然 REST API 表示 DateTimeLastModified 值为 2015-01-06T07:23:59Z,但 Exchange 数据库中的值中有一些未公开的毫秒数。例如,实际值为 2015-01-06T07:23:59.050Z。当此值与 2015-01-06T07:23:59Z 比较时,它更大,因此得到 returned。要解决此问题,您可以在过滤器中的时间中添加一秒钟,这应该会导致该联系人不 return.