使用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主机的应用程序池帐户,搜索服务和#39 ; s帐户,网络应用程序池帐户等。)
这是一个问题,因为我们必须将此字符串转换回DateTime类型,为此我们需要知道所使用的格式化模式(尝试转换" 25.04.2017"使用来自en的模式 - 美国文化或"不变的文化)。
有没有办法找出使用了哪种格式?