1

使用 KeywordQuery 查询 DateTime 字段,代码示例如下(本地 SharePoint 2013 场):

var kq = new KeywordQuery(_site)
q.SelectProperties.Add("OurDateTimeField");
SearchExecutor se = new SearchExecutor();
var rt = se.ExecuteQuery(kq);
ResultTable rtt = rt[ResultType.RelevantResults];

foreach (DataRow rr in rtt.ResultRows)
{
string mydate = rr["OurDateTimeField"]; 
}

OurDateTimeField 是一个 DateTime 类型的托管属性,它映射到 UPS 中的 DateTime 类型的用户属性。事情是,它被 KQ 作为“字符串”类型返回。

问题:返回的字符串实际上是一个初始的 DateTime 值(位于用户的属性中),由服务器使用某种任意日期时间格式转换为字符串。它并不总是匹配 CurrentCulture、CurrentUICulture、sharepoint web 的文化或每个可能相关服务帐户的默认文化(我们尝试了农场帐户、MySite 主机的应用程序池帐户、搜索服务的帐户、网络的应用程序池帐户等)使用的日期时间格式。

这是一个问题,因为我们必须将此字符串转换回 DateTime 类型,为此我们需要知道使用的格式模式(尝试使用 en-US 文化或“不变”文化中的模式转换“25.04.2017” )。

有没有办法找出使用了哪种格式模式?

4

0 回答 0