0

这是我尝试在 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 有一个。

4

2 回答 2

1

查看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 上还提供了有关日期和时间格式字符串的更多信息。

于 2013-03-20T08:34:58.330 回答
1

在http://social.msdn.microsoft.com/Forums/en-US/outlookdev/thread/8a8d6c59-20f4-4aeb-be0d-bfdc7b414611?prof=required回答:

搜索日期/时间值时不要使用“=”。由于四舍五入错误,您将永远不会得到匹配。使用范围,例如(开始 > 值 - 1 分钟)和(开始 < 值 + 1 分钟)。或者,更好的是,通过其条目 id (Namespace.GetItemfromID) 打开约会或通过另一个属性(例如主题)搜索。

于 2013-03-20T13:01:20.523 回答