无法筛选具有开始时间的Outlook约会项目
本文关键字:时间 Outlook 约会 项目 开始时 开始 筛选 | 更新日期: 2023-09-27 18:04:43
这是我在Outlook日历中查找约会的尝试:
var calendar = outlookApplication.GetNamespace("MAPI").GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
if (calendar == null || calendar.Items == null)
{
return null;
}
DateTime appointmentStart = new DateTime(2013, 04, 02, 10, 0 ,0);
string filter = string.Format("[Start] = '{0}'", appointmentStart );
var calendarItems = calendar.Items.Restrict(filter);
这样,我在日历中找不到约会,但我有一个约会时间是2013年4月2日10:00:00。
从MSDN中查看此示例,似乎filter
字符串中的日期/时间格式不正确:
string.Format("[Start] = '{0}'", appointmentStart);
返回[Start] = '02/04/2013 10:00:00'
,而
string.Format("[Start] = '{0}'", appointmentStart.ToString("g"));
返回[Start] = '02/04/2013 10:00'
请注意,此输出将取决于系统区域性(在我的情况下为fr-FR
(,这对我来说是有意义的,因为Outlook应该使用相同的区域性。
有关日期和时间格式字符串的更多信息也可以在MSDN上找到。
答案在http://social.msdn.microsoft.com/Forums/en-US/outlookdev/thread/8a8d6c59-20f4-4aeb-be0d-bfdc7b414611?prof=required:
在搜索日期/时间值时不要使用"="。由于四舍五入的错误,你永远不会得到一场比赛。使用一个范围,例如(start>value-1分钟(和(start<value+1分钟(。或者,更好的做法是,通过其条目id(Namespace.GetItemfromID(打开约会,或者通过另一个属性(例如Subject(进行搜索。