简体   繁体   中英

Microsoft Graph API CalendarView vs Microsoft EWS CalendarView

In EWS I can query a calendar with DateTime.Now and to only get the currently active events.

DateTime filterStartDate = DateTime.Now;
DateTime filterEndDate = filterStartDate.Date.AddDays(1).AddSeconds(-1);
CalendarView ccView = new CalendarView(filterStartDate, filterEndDate);

But it does not seem to work with MS Graphi API, where if the event started before my start filter, it won't show up

var queryOptions = new List<QueryOption>()
    {
        new QueryOption("startDateTime", filterStartDate.ToString("s")),
        new QueryOption("endDateTime",  filterEndDate .ToString("s"))
     };

 var res = await _graphClient.Users[roomSMTP].CalendarView
      .Request(queryOptions)
      .Header("Prefer", $"outlook.timezone=\"{_outlookTimeZone}\"")
      .Select("start,end,subject,organizer,id").GetAsync();

Is this by design or am I missing some sort of filter?

Any help would be appreciated.

From the documentation :

The values of startDateTime and endDateTime are interpreted using the timezone offset specified in the value and are not impacted by the value of the Prefer: outlook.timezone header if present. If no timezone offset is included in the value, it is interpreted as UTC.

I don't know if you are trying out edge cases but maybe you should use .ToString("o") (see here ).


And do you know that your code returns IUserCalendarViewCollectionRequest and that you need to iterate over the calendarViewPages and get the results for every page?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM