Предположим, что в Office365 есть 40 измененных или вновь добавленных контактов, когда мое приложение пытается синхронизировать с помощью API REST, оно выбирает 40 контактов. Если я снова синхронизироваться, указав ниже фильтры
Array ( [$top] => 7 [$orderby] => DateTimeLastModified [$filter] => DateTimeLastModified gt 2015-01-06T07:23:59Z )
Я получаю последнюю запись, которая была отправлена в предыдущем запросе, который не должен был быть в этом запросе.
Пожалуйста, сообщите, если есть какие-либо ошибки в фильтрах, которые я указал.
Я предполагаю, что значение, которое вы передаете в свой фильтр, является фактическим значением DateTimeLastModified для контакта, который возвращается. Вероятно, это связано с тем, как Exchange хранит дату / время. Время хранится в миллисекундах, но, как видно из того, как REST API предоставляет его, значение имеет только секунды.
Таким образом, хотя API REST сообщает, что значение DateTimeLastModified равно 2015-01-06T07: 23: 59Z, в значении в базе данных Exchange есть несколько неэкспонированных миллисекунд. Скажем, например, реальное значение 2015-01-06T07: 23: 59.050Z. Когда это значение сравнивается с 2015-01-06T07: 23: 59Z, оно больше, поэтому оно возвращается. Чтобы обойти это, вы можете добавить секунду ко времени в фильтре, что должно привести к тому, что этот контакт не вернется.
Других решений пока нет …