В списке календарей SharePoint я создаю два события с сегодняшней датой. Один я делаю на целый день, другой я назначаю время начала 12:00, а время окончания - 23:55.
Когда я создаю запрос CAML (в данном случае с "U2U CAML Query Builder"), я вижу странное поведение. Когда мой запрос прост "OrderBy", возвращаются оба события.
Когда я выполняю следующий запрос, который ищет события, которые больше или равны сегодняшнему дню, возвращается только событие, НЕ помеченное как «Событие на весь день»:
<Where>
<Geq>
<FieldRef Name='EventDate' />
<Value Type='DateTime'>2009-10-05T00:00:00Z</Value>
</Geq>
</Where>
Изучение результатов с помощью инструмента построителя запросов показывает, что значения EventDate (внутреннее имя столбца Start Time) идентичны (2009-10-05 00:00:00).
Почему SharePoint обрабатывает эти два события одинаково? Это может быть проблема с часовым поясом?
РЕДАКТИРОВАТЬ: Больше информации, я думаю, что это может быть проблема часового пояса. Я обнаружил атрибут «IncludeTimeValue» элемента Value, описанный здесь: MSDN . Я на восточном побережье (в настоящее время по Гринвичу - 4 часа). Если я отредактирую элемент Value
следующим образом: (обратите внимание, что теперь дата 4, а не 5)
<Value Type='DateTime' IncludeTimeValue='True'>2009-10-04T20:00:00Z</Value>
Тогда оба события возвращаются, но если я дохожу до 20:01, тогда я теряю событие на весь день. Когда я иду в 20:01, я также проигрываю весь день. Кто-нибудь знает, где я могу найти подробное описание этого поведения?
EDIT2: я запутался; исправлено первое редактирование.