在SharePoint日历列表中,我创建了两个具有今天日期的事件.我做了一个全天活动,另一个我将开始时间设置为上午12点,结束时间设置为下午11:55.
当我创建一个CAML查询(在这种情况下是w /"U2U CAML Query Builder")时,我看到了一些奇怪的行为.当我的查询是一个简单的"OrderBy"时,返回两个事件.
当我执行以下查询,搜索是大于或等于今天的事件,仅是事件不返回标记为"全天事件":
<Where>
<Geq>
<FieldRef Name='EventDate' />
<Value Type='DateTime'>2009-10-05T00:00:00Z</Value>
</Geq>
</Where>
Run Code Online (Sandbox Code Playgroud)
检查查询构建器工具的结果,我看到EventDate的值("开始时间"列的内部名称)是相同的(2009-10-05 00:00:00).
为什么SharePoint对这两个事件的处理方式相同?这可能是时区问题吗?
编辑:更多信息,我认为这可能是一个时区问题.我发现了Value元素的"IncludeTimeValue"属性 - 这里描述:MSDN.我在东海岸(目前是GMT - 4小时).如果我Value按如下方式编辑元素:(注意日期现在是第4个,而不是第5个)
<Value Type='DateTime' IncludeTimeValue='True'>2009-10-04T20:00:00Z</Value>
Run Code Online (Sandbox Code Playgroud)
然后返回两个事件,但如果我上升到20:01那么我将失去全天的事件.当我去20:01时,我也失去了全天活动.有谁知道我在哪里可以找到这种行为的详尽描述?
编辑2:我困惑自己; 纠正了第一次编辑.
SharePoint以UTC(也称为GMT或Zulu)存储日期/时间,并在显示时首先将其转换为站点本地时区.
但是对于全天事件,它会将时间(00:00到23:59:00)存储在站点LOCAL时区中.
正如你已经想通了自己 - 我相信你们已经发现了这样的错误在SharePoint解释查询及其忘了,整天事件是当地时间.
我想你可以通过查询来做一个讨厌的解决方法
EventDate> = SomeDate OR AllDayEvent = True AND EventDate> = SomeDate - 4hrs
这张海报有类似的问题 SO - SharePoint全日活动给出了模糊的结果
这将使您更深入地了解SharePoint SharePoint Web服务中的 borked时区 以及UTC时间的乐趣和游戏
如果这对你来说不够沮丧,那么请通过对象模型查看创建/修改日期,并惊叹于它们如何被报告为正常事件的本地时间和全天事件的UTC!
| 归档时间: |
|
| 查看次数: |
8686 次 |
| 最近记录: |