gpt4 book ai didi

SharePoint - 全天事件在 CAML 查询中的行为不同

转载 作者:行者123 更新时间:2023-12-04 01:58:50 26 4
gpt4 key购买 nike

在 SharePoint 日历列表中,我创建了两个带有今天日期的事件。一个我进行全天事件,另一个我将开始时间设置为上午 12 点,结束时间为晚上 11:55。

当我创建 CAML 查询(在本例中使用“U2U CAML 查询生成器”)时,我看到了一些奇怪的行为。当我的查询是一个简单的“OrderBy”时,两个事件都被返回。

当我执行以下查询大于或等于今天的事件时,只有 的事件不是 返回标记为“全天事件”:

<Where>
<Geq>
<FieldRef Name='EventDate' />
<Value Type='DateTime'>2009-10-05T00:00:00Z</Value>
</Geq>
</Where>

检查查询生成器工具的结果,我发现 EventDate(开始时间列的内部名称)的值是相同的 (2009-10-05 00:00:00)。

为什么 SharePoint 对这两个事件的处理方式相同?会不会是时区问题?

编辑:更多信息,我认为这可能是时区问题。我发现了 Value 元素的“IncludeTimeValue”属性 - 此处描述: MSDN .我在东海岸(目前格林威治标准时间 - 4 小时)。如果我编辑 Value元素如下:(注意日期现在是第 4 个,而不是第 5 个)
<Value Type='DateTime' IncludeTimeValue='True'>2009-10-04T20:00:00Z</Value>

然后返回两个事件,但如果我到达 20:01,那么我将失去全天事件。当我到 20:01 时,我也失去了全天事件。有谁知道我在哪里可以找到这种行为的详细描述?

EDIT2:我把自己弄糊涂了;更正了第一次编辑。

最佳答案

SharePoint 以 UTC(又名 GMT 或 Zulu)存储日期/时间,并在首次显示时将其转换为站点本地时区。

但是,对于全天事件,它会将时间(00:00 到 23:59:00)存储在站点本地时区中。

正如您自己已经发现的那样 - 我相信您已经发现 SharePoint 解释查询的方式存在错误,并且忘记了全天事件都是本地时间。

我想你可以通过查询来解决这个问题

事件日期 >= 某个日期
或者
AllDayEvent = True AND EventDate >= SomeDate - 4hrs

这张海报有类似的问题
SO - SharePoint all day event gives obscure result

这将使您更深入地了解 SharePoint 中的无聊时区
SharePoint Web Services and UTC time fun and games

如果这对你来说还不够沮丧,那么通过对象模型查看创建/修改日期,并惊叹于它们如何被报告为正常事件的本地时间和全天事件的 UTC!

关于SharePoint - 全天事件在 CAML 查询中的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1520651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com