使用c#的Outlook AdvancedSearch DASL

时间:2018-01-03 16:56:39

标签: c# outlook vsto mailitem

我正在使用c#office addin(VSTO)

进行outlook的高级搜索

过滤DASL查询 - urn:schemas:httpmail:datereceived> 'dd.M.yy HH:mm' - 在我的机器中退回物品。但它不适用于其他一些机器。 我的机器日期时间格式为dd-mm-yy

过滤器urn:schemas:httpmail:datereceived> 'dd / MM / yyyy HH:mm' - 不在我的机器上回转物品并在其他机器上工作。

是否有任何通用格式可用于过滤以在所有计算机(环境)中工作。

1 个答案:

答案 0 :(得分:0)

我认为你的问题是你手边传递的格式。 来自this post。 (强调我的)

  

Outlook使用的格式对应于常规(短日期和   DateTimeFormatInfo类中的短时间)模式。如果你使用   DateTime结构的Parse方法,你应该肯定的   Parse方法的参数遵循短日期和短时间   当前语言环境的格式。如果您使用构造函数   DateTime结构,需要指定年,月,日,小时,   分钟和第二个参数然后使用ToString方法   " G"格式说明符,用于将日期时间值转换为短日期   和Outlook预期的短时间字符串。日期说明符参数   ToString方法区分大小写,因此请务必使用" g"作为   格式说明符。当您使用DateTime构造函数和" g"   在ToString方法中,您可以创建日期时间   Outlook将正确解释的文字。

我会在链接中创建过滤器,创建一个DateTime对象,然后使用"g"参数将其转换为字符串。来自文档:

string searchCriteria = String.Format("\"urn:schemas:httpmail:datereceived\" >= '{0}'", new DateTime(2005, 6, 12, 15, 30, 0).ToString("g"))

通过这种方式,您可以确保根据运行查询的系统文化正确格式化日期。

注意:请记住它区分大小写,因此您必须使用" g" 而不是" G"